0

运行我提供的代码时,我收到以下警报:

第 1 项中缺少第 2 项的第 2 列 ['t2']。使用 fill=TRUE 填充 NA(对于列表列为 NULL),或使用.names=FALSE 忽略列名。use.names='check'(从 v1.12.2 开始默认)发出此消息并继续进行,就像 use.names=FALSE 一样,以实现向后兼容性。有关控制此消息的选项,请参阅 v1.12.2 中的新闻项目 5。

如何纠正它?

library(data.table)
DT = data.table(Smp=1:9,
                s=as.character(seq(as.POSIXct("2020-01-01"), by = "1 sec",length.out = 9)),
                x=rep(c("b","a","c"),each=3), y=c(1,3,6))
DT2=data.table(Smp=1:9,
               t2=as.character(seq(as.POSIXct("2020-01-02"), by = "1 sec",length.out = 9)),
               x=rep(c("h","j","a"),each=3), y=c(2,5,8))
#seq(as.POSIXct("2001-01-01 04:15:20 "), by = "1 sec",length.out = 9)

tmp_dir = tempdir()
setwd(tmp_dir)
getwd()
fwrite(DT, "file2020-1.csv")
fwrite(DT2,"file2020-2.csv")

#fread("file2020-1.csv")
#fread("file2020-2.csv")

files = list.files(pattern="*.csv")#path=tmp_dir
files
rDT = rbindlist(lapply(files[c(1,2)],fread,fill=TRUE,stringsAsFactors=FALSE,check.names = T))
#2
l <- lapply(files[c(1,2)], fread,fill=TRUE,stringsAsFactors=FALSE,check.names = T)
dt <- rbindlist( l )

data.table 最初每个有 207 列 在此处输入图像描述

4

1 回答 1

1

警告是因为您在两个数据框中有不同的列名,它们在合并为一个时不匹配。

您可以在两个数据框中使用相同的名称,这将避免警告。

library(data.table)

cols <- c('Smp', 's','x', 'y')
rDT = rbindlist(lapply(files[c(1,2)], function(x) 
  setnames(fread(x, fill=TRUE,stringsAsFactors=FALSE,check.names = TRUE), cols)))
于 2020-11-27T09:29:13.353 回答