我的工作区有84个数据帧。我无法将它们作为列表导入,因为文件位于不同的文件夹和目录中。
ls() #command gives the names of these 84 dataframes. e.g [1] pav_DJF_histo.csv
我使用以下方法获取每个数据框的内容:
dat<-mget(ls())
#然后得到每列的平均值
lst4<-lapply(dat,function(x) apply(x[,-c(1)],2,mean))
问题:如何取消列出lst4,使得数据框的名称与
给出的名称相同 ls()?
非常感谢您的建议。
注意:我在列表中有84个数据框,有84个不同的名称,但所有数据框都有相同的尺寸。
答案 0 :(得分:2)
假设您想要列的数据框表示,您可以在所有列均值上调用rbind
,然后添加一列标识该行的来源:
# Reproducible setup
iris1.csv <- iris
iris2.csv <- iris
names <- c("iris1.csv", "iris2.csv")
dat <- mget(names)
lst4 <- lapply(dat, function(x) apply(x[,-5], 2, mean))
# Build the new data frame
means <- as.data.frame(do.call(rbind, lst4))
means$source <- names(lst4)
means
# Sepal.Length Sepal.Width Petal.Length Petal.Width isv source
# iris1.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris1.csv
# iris2.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris2.csv