我有很多Rdata文件,我想在一个数据帧中合并。
我的文件,例如:
file1.RData
file2.RData
file3.RData
所有数据文件都具有以下结构:datafile $ a和datafile $ b。从上面的所有文件中我想加载变量$a
并将其添加到已经存在的名为md
的数据框中。我的问题不是将文件加载到全局环境中,而是处理RData文件中的数据。
到目前为止,我的代码显然无效。
library(dplyr)
files <- list.files("correct directory", pattern="*.RData")
这将返回正确的文件列表。
我也知道我需要lapply
一个函数。
lapply(files, myFun)
我的问题在于功能。我现在得到的是什么:
myFun <- function(files) {
load(files)
df <- data.frame(datafile$a)
md <- bind_rows(md, df)
}
上面的代码不起作用,我知道如何让它工作?
答案 0 :(得分:4)
尝试
library(dplyr)
bind_rows(lapply(files, myFun))
# a
#1 1
#2 2
#3 3
#4 4
#5 5
#6 1
#7 2
#8 3
#9 4
#10 5
#11 6
#12 7
#13 8
#14 9
#15 10
#16 11
#17 12
#18 13
#19 14
#20 15
,其中
myFun <- function(files) {
load(files)
df <- data.frame(a= datafile$a)
}
datafile <- data.frame(a=1:5, b=6:10)
save(datafile, file='file1.RData')
datafile <- data.frame(a=1:15, b=16:30)
save(datafile, file='file2.RData')
files <- list.files(pattern='file\\d+.RData')
files