从数据帧名称列表中创建数据帧列表(对于merge_all)

时间:2019-06-26 17:30:03

标签: r list dataframe merge

我有一个数据框名称列表,我想创建一个数据框列表(或者我希望能够使用数据框名称列表来调用数据框本身)。这个想法是要能够合并所有数据框和一个数据框名称列表。

在下面的示例中,我所犯的错误很明显:当我引用数据帧名称列表时,我合并名称本身,而不是名称所引用的数据帧:

names.df<-c("red","green","blue")
variables.df<-c(1, 2, 3)

for(i in 1:length(names.df)){
assign(names.df[i],as.data.frame(i*variables.df))
}

df<-Reduce(function(x, y) merge(x, y, all=TRUE), list(names.df))

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

如果环境中已经存在data.frames(redbluegreen),那么您应该能够做到

mget(names.df)

从您的问题尚不清楚它们是否已经存在。如果没有,则必须采用稍微不同的方法

setNames(object = lapply(seq_along(names.df), function(i){
    data.frame(val = variables.df * i)
}), nm = names.df)

#$red
#  val
#1   1
#2   2
#3   3

#$green
#  val
#1   2
#2   4
#3   6

#$blue
#  val
#1   3
#2   6
#3   9