如何在rbind.fill中使用粘贴函数的输出?

如何在rbind.fill中使用粘贴函数的输出?,r,rbind,R,Rbind,我有一个数据帧列表,我正在尝试rbind.fill,因为它们的列数不一样。数据帧的名称为x1、x2、…x10 我的代码: x.list<-list(c(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)) library(plyr) rbind.fill(x.list) x、 列表1解释x1,x2,。。。作为字符而不是数据帧: str(x.list1) List of 10 $ : chr "x1" $ : chr "x2" $ : chr "x3" $ :

我有一个数据帧列表,我正在尝试
rbind.fill
,因为它们的列数不一样。数据帧的名称为x1、x2、…x10

我的代码:

x.list<-list(c(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10))
library(plyr)
rbind.fill(x.list) 
x、 列表1解释x1,x2,。。。作为字符而不是数据帧:

    str(x.list1)
List of 10
 $ : chr "x1"
 $ : chr "x2"
 $ : chr "x3"
 $ : chr "x4"
 $ : chr "x5"
 $ : chr "x6"
 $ : chr "x7"
 $ : chr "x8"
 $ : chr "x9"
 $ : chr "x10"
因此,我不能使用rbind.fill,因为它需要数据帧列表。我已尝试按照建议使用
mget

但是,我错了

Error in mget(x.list1) : argument "envir" is missing, with no default
设置环境(如前一个问题的答案评论中所述)也无济于事:

rbind.fill(mget(x.list1,envir = .GlobalEnv))
Error in mget(x.list1, envir = .GlobalEnv) : invalid first argument
有没有解决这个问题的建议

以下是示例数据帧x1、x2和x3:

x1<-structure(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 
24.4, 22.8, 19.2), cyl = c(6, 6, 4, 6, 8, 6, 8, 4, 4, 6), disp = c(160, 
160, 108, 258, 360, 225, 360, 146.7, 140.8, 167.6), hp = c(110, 
110, 93, 110, 175, 105, 245, 62, 95, 123)), .Names = c("mpg", 
"cyl", "disp", "hp"), row.names = c("Mazda RX4", "Mazda RX4 Wag", 
"Datsun 710", "Hornet 4 Drive", "Hornet Sportabout", "Valiant", 
"Duster 360", "Merc 240D", "Merc 230", "Merc 280"), class = "data.frame")

x2<-structure(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 
24.4, 22.8, 19.2), cyl = c(6, 6, 4, 6, 8, 6, 8, 4, 4, 6), disp = c(160, 
160, 108, 258, 360, 225, 360, 146.7, 140.8, 167.6), hp = c(110, 
110, 93, 110, 175, 105, 245, 62, 95, 123), drat = c(3.9, 3.9, 
3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.92), wt = c(2.62, 
2.875, 2.32, 3.215, 3.44, 3.46, 3.57, 3.19, 3.15, 3.44)), .Names = c("mpg", 
"cyl", "disp", "hp", "drat", "wt"), row.names = c("Mazda RX4", 
"Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout", 
"Valiant", "Duster 360", "Merc 240D", "Merc 230", "Merc 280"), class = "data.frame")

x3<-structure(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 
24.4, 22.8, 19.2, 17.8), cyl = c(6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 
6), disp = c(160, 160, 108, 258, 360, 225, 360, 146.7, 140.8, 
167.6, 167.6)), .Names = c("mpg", "cyl", "disp"), row.names = c("Mazda RX4", 
"Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout", 
"Valiant", "Duster 360", "Merc 240D", "Merc 230", "Merc 280", 
"Merc 280C"), class = "data.frame")

x1通过匿名函数和
get
使用
lappy

# use: 
lapply(paste0("x", 1:10), function(x) get(x))

# instead of: 
as.list(paste0(x,1:10))

完美的非常感谢。输入错误:
paste0
@RicardoSaporta中的“x”而不是“x”这里需要匿名函数吗?你不能使用
lappy(paste0(“x”,1:10),get)
?@nograps,在这个简单的例子中,两者都可以。至于“最佳实践”函数,例如
get
应该使用匿名函数。特别是如果实现比简单地取整某些对象更复杂的东西。有关更多信息,请参见
?lappy
x1<-structure(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 
24.4, 22.8, 19.2), cyl = c(6, 6, 4, 6, 8, 6, 8, 4, 4, 6), disp = c(160, 
160, 108, 258, 360, 225, 360, 146.7, 140.8, 167.6), hp = c(110, 
110, 93, 110, 175, 105, 245, 62, 95, 123)), .Names = c("mpg", 
"cyl", "disp", "hp"), row.names = c("Mazda RX4", "Mazda RX4 Wag", 
"Datsun 710", "Hornet 4 Drive", "Hornet Sportabout", "Valiant", 
"Duster 360", "Merc 240D", "Merc 230", "Merc 280"), class = "data.frame")

x2<-structure(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 
24.4, 22.8, 19.2), cyl = c(6, 6, 4, 6, 8, 6, 8, 4, 4, 6), disp = c(160, 
160, 108, 258, 360, 225, 360, 146.7, 140.8, 167.6), hp = c(110, 
110, 93, 110, 175, 105, 245, 62, 95, 123), drat = c(3.9, 3.9, 
3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.92), wt = c(2.62, 
2.875, 2.32, 3.215, 3.44, 3.46, 3.57, 3.19, 3.15, 3.44)), .Names = c("mpg", 
"cyl", "disp", "hp", "drat", "wt"), row.names = c("Mazda RX4", 
"Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout", 
"Valiant", "Duster 360", "Merc 240D", "Merc 230", "Merc 280"), class = "data.frame")

x3<-structure(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 
24.4, 22.8, 19.2, 17.8), cyl = c(6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 
6), disp = c(160, 160, 108, 258, 360, 225, 360, 146.7, 140.8, 
167.6, 167.6)), .Names = c("mpg", "cyl", "disp"), row.names = c("Mazda RX4", 
"Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout", 
"Valiant", "Duster 360", "Merc 240D", "Merc 230", "Merc 280", 
"Merc 280C"), class = "data.frame")
# use: 
lapply(paste0("x", 1:10), function(x) get(x))

# instead of: 
as.list(paste0(x,1:10))