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

使用fread和file_list读取多CSV时将第26列设为字符类型报错求助

解决fread读取多CSV时电话号码列类型冲突的问题

错误原因

报错提示原文件第26列被识别为integer64类型,但你期望将其设为character类型,合并数据集时出现类型不匹配冲突。另外因为你使用了select参数筛选列,原文件第26列在筛选后的数据集里位置发生变化,导致之前指定colClasses的方式未生效。

可行解决方案

方案1:强制将所有integer64类型转为字符

直接在fread中添加integer64="character"参数,把所有被识别为integer64的列(包括电话号码列)读取为字符类型,从根源避免类型冲突:

SD_data <- data.table(NULL)

file_list <- list.files(path = SD_Data_feed, pattern="ldn - Data.*\\.csv", ignore.case=TRUE)

for (i in 1:length(file_list)){
  temp_data <- fread(file.path(SD_Data_feed, file_list[i]),
                     select = c(1:4,6:33),
                     encoding = "UTF-8",
                     integer64 = "character")  # 新增此参数
                  
   SD_data <- unique(rbind(SD_data, temp_data))
}

方案2:读取后强制转换目标列(更精准)

先读取数据,再将筛选后的目标列转为字符类型。注意:原文件第26列在select筛选后的位置是25(因为跳过了原第5列),或者直接用列名更稳妥:

SD_data <- data.table(NULL)

file_list <- list.files(path = SD_Data_feed, pattern="ldn - Data.*\\.csv", ignore.case=TRUE)

for (i in 1:length(file_list)){
  temp_data <- fread(file.path(SD_Data_feed, file_list[i]),
                     select = c(1:4,6:33),
                     encoding = "UTF-8")
  # 方法A:按位置转换(原26列对应筛选后的第25列)
  temp_data[, 25 := as.character(get(names(temp_data)[25]))]
  # 方法B:按列名转换(替换为你实际的电话号码列名)
  # temp_data[, phone_number := as.character(phone_number)]
                  
   SD_data <- unique(rbind(SD_data, temp_data))
}

方案3:批量处理后合并(更高效)

用lapply批量处理所有文件,再一次性合并,更符合data.table的使用习惯:

file_paths <- file.path(SD_Data_feed, list.files(path = SD_Data_feed, pattern="ldn - Data.*\\.csv", ignore.case=TRUE))

SD_data <- rbindlist(lapply(file_paths, function(path) {
  dt <- fread(path, select = c(1:4,6:33), encoding = "UTF-8")
  # 转换目标列(这里用列名示例,替换为实际列名)
  dt[, phone_number := as.character(phone_number)]
  return(dt)
}), use.names = TRUE, fill = TRUE)

SD_data <- unique(SD_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:28:30