首页 > 解决方案 > 如何遍历现有 R 函数中 2 个数据帧中的所有列和行

问题描述

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

我正在使用 R 中现有的 Brierscore 函数,当我只对单个列感兴趣时,一切都运行良好(即所有参与者的 1 个问题的答案。我无法弄清楚如何编写循环来循环遍历所有列(问题) .

我有2个数据框:

  1. 正确答案,包含 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]], 错误:意外 '[[' in: " Brier_scores_all_questions <- brierscore(df_ans_base$[ [" df_base,decomp = FALSE, bounds = c(0,2), 错误:“df_base”中的意外 ',' reverse = FALSE,wt = NULL) 错误:“reverse = FALSE”中的意外 ','

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

标签: rfunctionloops

解决方案


我相信您的循环结构是正确的,但是您在索引数据帧的方式上存在错误。在这种情况下,$运算符 和[]是多余的。例如,假设Election_Outcomeforecast. 然后,您可以使用forecast$Election_Outcome或专门选择该列forecast[,2]。当您使用 时[,2],您要求所有行和第 2 列。因此,在您的循环中,您应该执行类似forecast[,i].


推荐阅读