我正在尝试为在调查中回答有关不同事件发生可能性的多个问题的参与者计算Brier分数。
我正在使用R中现有的Brierscore函数,并且当我只对单个列感兴趣时(例如,针对所有参与者的1个问题的答案。),一切工作都很好。我无法解决如何编写循环遍历所有列的问题(问题)。
我有2个数据框:
我尝试了多个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”中出现意外的','
} 错误:“}”中的意外“}”
答案 0 :(得分:0)
我相信您的循环结构是正确的,但是在如何索引到数据帧中却有一个错误。在这种情况下,$
运算符和[]
是多余的。例如,假设Election_Outcome
是forecast
中的第二列。然后,可以使用forecast$Election_Outcome
或forecast[,2]
专门选择该列。使用[,2]
时,您需要输入所有的行和列2。因此,在循环中,您应该执行类似forecast[,i]
的操作。