我有一个数据框名称列表,我想创建一个数据框列表(或者我希望能够使用数据框名称列表来调用数据框本身)。这个想法是要能够合并所有数据框和一个数据框名称列表。
在下面的示例中,我所犯的错误很明显:当我引用数据帧名称列表时,我合并名称本身,而不是名称所引用的数据帧:
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))
关于如何解决此问题的任何想法?
答案 0 :(得分:1)
如果环境中已经存在data.frames(red
,blue
和green
),那么您应该能够做到
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