带占位符的R中的cbind数据帧

带占位符的R中的cbind数据帧,r,wildcard,placeholder,cbind,R,Wildcard,Placeholder,Cbind,假设我有三个数据帧: data.frame1 <- data.frame(x=c(1:10)) data.frame2 <- data.frame(x=c(11:20)) data.frame3 <- data.frame(x=c(21:30)) data.frame1可能是这样的吗 假设ls() 根据@akrun的评论,这可以简化为 as.data.frame(Reduce("cbind", mget(ls()))) 也许是这样的 假设ls() 根据@akrun的评论,这

假设我有三个数据帧:

data.frame1 <- data.frame(x=c(1:10))
data.frame2 <- data.frame(x=c(11:20))
data.frame3 <- data.frame(x=c(21:30))

data.frame1可能是这样的吗

假设
ls()

根据@akrun的评论,这可以简化为

as.data.frame(Reduce("cbind", mget(ls())))

也许是这样的

假设
ls()

根据@akrun的评论,这可以简化为

as.data.frame(Reduce("cbind", mget(ls())))

您可以使用
mget
do.call(cbind,mget(ls(pattern=“data\\.frame\\d+”))
也可以使用
do.call(cbind,sappy(ls(pattern=“^data.frame.$”),get))
您可以使用
mget
do.call(cbind,mget(ls(pattern=“data\.frame\\d+”)
也可以使用
do.call
通常,
do.call
往往比
Reduce
更快,但当然取决于上下文!另外,
sapply(ls()…
可以替换为我们忽略的apply famly同级:
eapply(.GlobalEnv,函数(i)i)
!@Parfait谢谢你的评论。我更喜欢
do.call
,但我只是在看到akrun的评论后才尝试。因为akrun的评论已经提到了它,我想我不会更新我的答案来使用它。我从来都不知道
eapply
,所以谢谢你的提及。在这种情况下,我认为
mget
是合适的,一个l虽然这也来自akrun。通常,
do.call
往往比
Reduce
更快,但当然取决于上下文!而且,
sapply(ls()…
可以替换为我们忽略的apply famly同级:
eapply(.GlobalEnv,function(i)i)
!@Parfait谢谢你的评论。我更喜欢
do.call
,但我只是在看到akrun的评论后才尝试。因为akrun的评论已经提到了它,我想我不会更新我的答案来使用它。我从来都不知道
eapply
,所以谢谢你的提及。在这种情况下,我认为
mget
是合适的,一个尽管这也是来自阿克伦。
res.data.frame2 <- grep(pattern = "^data.frame.$", ls(), value=T)
res.data.frame3  <- do.call(cbind, lapply(ls(pattern = "^data.frame.$")), get)
# [1] "data.frame1" "data.frame2" "data.frame3"

as.data.frame(Reduce("cbind", sapply(ls(), function(i) get(i))))
as.data.frame(Reduce("cbind", mget(ls())))