You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用lapply()批量处理csv文件计算新列,解决Argument 2 must be a data frame报错

问题原因分析
  • 错误的列表类型赋值:你使用lapply()生成correct_key列时,lapply()返回的是列表格式,而非数据框列要求的原子向量,绑定数据时会触发类型不兼容报错。同时条件分支中误用方括号[]包裹返回值,属于语法错误。
  • 文件路径不匹配:你在list.files()中指定了搜索data/目录下的文件,但返回的只有文件名没有路径前缀,read.csv()直接读取会找不到文件。
修复后代码
# 先加载依赖包(bind_rows来自dplyr,未安装需先执行install.packages("dplyr"))
library(dplyr)

# 初始化空数据框
dat <- data.frame()

# 获取文件完整路径,避免读取失败
files <- list.files(path = 'data/', pattern = '\\.csv$', full.names = TRUE)

for (filename in files) {
  df <- read.csv(filename)
  
  # 向量化计算正确按键,无需循环
  df$correct_key <- ifelse(df$leftright == 'A_left_B_right', 'Z', 'M')
  
  # 计算正确率标识
  df$correct_ans <- as.integer(df$correct_key == df$pressed_key)
  
  # 合并数据
  dat <- bind_rows(dat, df)
}

如果你的leftright列存在除两个有效值外的其他取值,可以用case_when()做更严谨的判断:

df$correct_key <- case_when(
  df$leftright == 'A_left_B_right' ~ 'Z',
  df$leftright == 'B_left_A_right' ~ 'M',
  TRUE ~ NA_character_
)
效果验证

你给出的样例数据运行上述代码后,会完全匹配你期望的输出结果。

内容的提问来源于stack exchange,提问作者abc_95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:36:03