如何在现有R函数中遍历2个数据帧中的所有列和行

时间:2019-08-16 14:18:42

标签: r function loops

我正在尝试为在调查中回答有关不同事件发生可能性的多个问题的参与者计算Brier分数。

我正在使用R中现有的Brierscore函数,并且当我只对单个列感兴趣时(例如,针对所有参与者的1个问题的答案。),一切工作都很好。我无法解决如何编写循环遍历所有列的问题(问题)。

我有2个数据框:

  1. correct_answers,包含1和0来指示事件是否发生
  2. 预测,参与者预测是否会发生0-1规模的事情。

我尝试了多个for循环结构,并为每个数据帧使用了for循环。下面的示例似乎最接近我需要的示例,但仍然不正确。如果语法错误或无法使用这些类型的函数循环,我将尝试进行计算。

这有效:

Brier_scores_all_questions <- brierscore(correct_answer$Election_Outcome ~ forecast$Election_Outcome, forecast, decomp = FALSE, bounds = c(0,2),
                         reverse = FALSE, wt = NULL)

这是我尝试过的循环之一:

for(i in 1:ncol) { 

Brier_scores_all_questions <- brierscore(correct_answer$[[i]] ~ forecast$[[i]], forecast, decomp = FALSE, bounds = c(0,2),
                         reverse = FALSE, wt = NULL)

} # close loop

理想情况下,我想要一个矩阵,其中包含每个参与者(行)和问题(列)的Brier分数。以下是我收到的错误消息:

  

for(i in 2:ncol){   +   + Brier_scores_all_questions <-brierscore(df_ans_base $ [[i]]〜df_base $ [[i]],   错误:意外的'[['在:   ”   Brier_scores_all_questions <-brierscore(df_ans_base $ [[“                            df_base,decomp = FALSE,范围= c(0,2),   错误:“ df_base”中出现意外的','                            反向= FALSE,wt = NULL)   错误:“ reverse = FALSE”中出现意外的','

     

}   错误:“}”中的意外“}”

1 个答案:

答案 0 :(得分:0)

我相信您的循环结构是正确的,但是在如何索引到数据帧中却有一个错误。在这种情况下,$运算符和[]是多余的。例如,假设Election_Outcomeforecast中的第二列。然后,可以使用forecast$Election_Outcomeforecast[,2]专门选择该列。使用[,2]时,您需要输入所有的行和列2。因此,在循环中,您应该执行类似forecast[,i]的操作。