读取数据框似乎是数据 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。
在下一步中,我通过以下代码删除了两个列 pressure
和 level
。这样,列表的所有元素都具有与我要添加的 table M01
相同的结构。
datalist <-lapply(datalist, '[', , -c(2,3))
我有一个名为 M01
的数据文件,其结构与其他文件相同,我想将其作为第一个元素添加到 datalist
。
但这似乎不适用于以下代码:
datalist2 <- c(M01, datalist)
那么就是这个列表的结构datalist2
:
如何解决这个问题?非常感谢!
有几种追加方法。一个选项是分配一个名称
datalist[["M01"]] <- M01
如果我们想将 data.table
转换为 data.frame
,请使用 setDF
或 as.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)
它 unclass
,data.frame
因为它也是一个等长列的 list
,并且作为一个单元附加列而不是 data.frame
作为一个单位
我已经将九个数据 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。
在下一步中,我通过以下代码删除了两个列 pressure
和 level
。这样,列表的所有元素都具有与我要添加的 table M01
相同的结构。
datalist <-lapply(datalist, '[', , -c(2,3))
我有一个名为 M01
的数据文件,其结构与其他文件相同,我想将其作为第一个元素添加到 datalist
。
但这似乎不适用于以下代码:
datalist2 <- c(M01, datalist)
那么就是这个列表的结构datalist2
:
如何解决这个问题?非常感谢!
有几种追加方法。一个选项是分配一个名称
datalist[["M01"]] <- M01
如果我们想将 data.table
转换为 data.frame
,请使用 setDF
或 as.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)
它 unclass
,data.frame
因为它也是一个等长列的 list
,并且作为一个单元附加列而不是 data.frame
作为一个单位