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

如何将列数不同的多个CSV文件加载到R DataFrame中

解决CSV文件指定列加载问题

你可以通过在读取每个文件时仅筛选需要的列来实现需求,修改后的代码如下:

fileList <- dir("thedata")
myCols <- c('Time','Place')

# 遍历每个CSV文件,读取后只保留指定列
df <- do.call(rbind, lapply(fileList, function(file) {
  # 构建完整文件路径(避免找不到文件)
  full_path <- file.path("thedata", file)
  # 读取文件并筛选指定列,drop=FALSE确保单列时仍为数据框格式
  read.csv(full_path)[, myCols, drop = FALSE]
}))

补充说明:

  • 这段代码会自动忽略所有myCols之外的列(包括'Temp'),不管原文件有多少列,只要目标列存在就会被保留
  • drop=FALSE是为了防止当某个文件只有指定的一列时,返回的结果变成向量而非数据框,导致rbind报错
  • 如果想更高效(避免读取所有列再筛选),可以用colClasses参数提前指定要读取的列类型,其他列设为NULL:
# 先获取任意一个文件的表头,构建列类型规则
sample_header <- names(read.csv(file.path("thedata", fileList[1]), nrows = 1))
col_classes <- ifelse(sample_header %in% myCols, "character", NULL)
# 这里可以根据实际数据类型调整,比如Time是日期就用"POSIXct",Place是字符用"character"

df <- do.call(rbind, lapply(fileList, function(file) {
  read.csv(file.path("thedata", file), colClasses = col_classes)
}))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:01:55