2013-09-29 116 views
2

我有我一直在使用这样的代码创造了许多变数:的R - 对多个变量使用rbind具有类似名称

for (i in 1:10) { 
    assign(paste0("variable", i), i)} 

我现在需要使用rbind中的变量来组合它们。我尝试这样的事情无济于事:

rbind(assign(paste0("variable", 1:10))) 

任何建议怎么办?

回答

9

这是处理相关项目的错误方法。最好使用列表或数据框,但您可能会在适当的时候找出原因。现在:

do.matrix <- do.call(rbind, lapply(ls(patt="variable"), get)) 

或者:

do.matrix <- do.call(rbind, lapply(paste0("variable", 1:10) , get)) 
+0

这个工作,但只有当我没有其他变量具有相同的模式。例如,如果在我的原始代码中,我现在将for循环设置为1000,然后将其设置回10,则do.matrix变量将有太多行。 – bill999

+0

谢谢@DWin。你对我评论的跟进是正确的。我道歉。并感谢这个额外的代码行。这是我需要的。 – bill999

1

我想补充的另一种方式来合并具有动态名称的多个dataframes。这将通过使用来自dplyrmgetbind_rows来完成。

# 3 Data frames are created 
TXN_MONTH_01 <- data.frame(a = 1:10, b = 101:110) 

TXN_MONTH_02 <- data.frame(a = 11:20, b = 111:120) 

TXN_MONTH_03 <- data.frame(a = 21:30, b = 121:130) 

#create a list using dynamic names of dataframes 
z <- as.list(mget(paste("TXN_MONTH_0", 1:3, sep=""))) 
library(dplyr) 
#now call bind rows 
bind_rows(z) 
# a b 
#1 1 101 
#2 2 102 
#3 3 103 
#4 4 104 
#5 5 105 
#..... 
#..... 
#25 25 125 
#26 26 126 
#27 27 127 
#28 28 128 
#29 29 129 
#30 30 130 
相关问题