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

Windows端RStudio运行read_csv传id参数报unused argument错误求助

问题根因
  • 报错核心是代码存在函数笔误:id = "path"既不是base R中lapply()的合法参数,也不是readr::read_csv()的参数,原作者实际要调用的是purrr包中的map_dfr()函数——这个函数会批量执行读入操作后自动按行合并所有数据框,它的.id参数作用就是生成一列存储每个数据块来源的标识,正好对应离职同事提到的「id对应文件夹/文件路径」逻辑。
  • 同事设备上能正常运行,是因为他们本地R环境默认启动加载了purrr,且日常写代码时习惯用map_dfr,实际运行时自动替换了笔误的lapply,和Mac/Windows系统差异没有直接关系。
  • 删掉id = "path"后报object 'path' not found,是因为后续处理逻辑依赖读入结果中名为path的来源列,删掉参数后这列没有被生成,后续调用自然会报错。
修复步骤
  1. 先安装并加载依赖包,Windows系统注意路径不要用单反斜杠,统一替换为正斜杠/即可跨系统兼容:
# 首次运行先执行安装,后续可注释
# install.packages("tidyverse")
library(tidyverse)
  1. 可以选择两种方案实现和原代码完全一致的效果:
    方案一(贴合原作者代码逻辑,最简洁):
# 先把文件全路径存为变量,避免重复写路径出问题
file_list <- list.files(path = "mypath", full.names = TRUE, pattern = "\\.csv$")

df <- file_list %>%
  set_names() %>%
  map_dfr(read_csv, 
          col_names = TRUE, 
          col_types = cols(.default = "c"), 
          .id = "path") %>%
  # 后续接你原有剩余代码即可
  ....(more code)

方案二(base R实现,无额外包依赖):

file_list <- list.files(path = "mypath", full.names = TRUE, pattern = "\\.csv$")
df_list <- lapply(file_list, function(x){
  tmp <- read_csv(x, col_names = TRUE, col_types = cols(.default = "c"))
  tmp$path <- x
  tmp
})
df <- do.call(rbind, df_list)
# 后续接剩余代码
  1. 修复后可以先抽查几行path列的值,确认和每行数据对应的文件来源匹配,再跑后续逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 21:24:56