读取数据框似乎是数据 table 和数据框 - 如何将新数据文件作为新元素添加到这个 table 列表中?

Reading in data frames seems to be data table and data frame - how to add new datafile as new element into this list of tables?

我已经将九个数据 tables(之前在 R 中生成)读入 R 中的列表 datalist

library(data.table)

path <- "C:/Users/Lies/datafiles"
files<-list.files(path,full.names=T)
datalist <- list()
l <- length(files)
trolls <-{c("M02","M03","M04","M05","M06","M07","M08","M09", "M10")}
for (x in 1:l){
  datalist[[x]] <- fread(files[x], header = TRUE, sep = ",")
  names(datalist)[x] <- trolls[x]
  datalist[[x]]$time <- as.POSIXct(datalist[[x]]$time,format="%Y-%m-%d %H:%M")
}

但是,将数据文件读入列表:每个元素似乎是一个 data.table 和一个 data.frame。

在下一步中,我通过以下代码删除了两个列 pressurelevel。这样,列表的所有元素都具有与我要添加的 table M01 相同的结构。

datalist <-lapply(datalist, '[', , -c(2,3))

我有一个名为 M01 的数据文件,其结构与其他文件相同,我想将其作为第一个元素添加到 datalist

但这似乎不适用于以下代码:

datalist2 <- c(M01, datalist)

那么就是这个列表的结构datalist2:

如何解决这个问题?非常感谢!

有几种追加方法。一个选项是分配一个名称

datalist[["M01"]] <- M01

如果我们想将 data.table 转换为 data.frame,请使用 setDFas.data.frame

datalist <- lapply(datalist, setDF)

datalist <- lapply(datalist, as.data.frame)

但是,这会将列表元素作为新条目添加到最后

另一种选择是创建 'datalist2',其元素多于 'datalist'

 datalist2 <- vector('list', length(datalist) + 1)
 datalist2[[1]] <- M01
 datalist2[-1] <- datalist

或者如果需要在顶部,将 M01 对象包裹在 list 中,然后使用 c

datalist2 <- c(M01 = list(M01), datalist)

当我们这样做时

 c(M01, datalist)

unclassdata.frame 因为它也是一个等长列的 list,并且作为一个单元附加列而不是 data.frame 作为一个单位