我想堆叠具有连续名称的向量。
例如,我有
a1<-1:3
a2<-4:6
a3<-7:9
我知道我能帮助你
z<-as.vector(rbind(a1,a2,a3))
如果我有100个as,a1,a2,a3,...,a100,我怎么能这样做?
谢谢!
答案 0 :(得分:1)
您可以使用get()
访问变量。
您的示例将如下所示:
a_list <- list()
for(i in 1:3){
a_list[[i]] <- get(paste0("a",i))
}
z <- as.vector(do.call("rbind",a_list))
或使用lapply
:
as.vector(do.call("rbind",lapply(1:3,function(x){get(paste0("a",x))})))
然后你可以这样做,例如i in 1:100
或任何你需要的东西。
答案 1 :(得分:1)
我们可以使用mget
。以下结果与您的exmple代码输出相同的输出。然后,您可以将1:3
更改为1:100
。
as.vector(matrix(unlist(mget(paste0("a", 1:3))), ncol = 3, byrow = TRUE))
[1] 1 4 7 2 5 8 3 6 9
答案 2 :(得分:0)
如果你把它们全部作为列表'lst'的成员,那么你可以简单地调用do.call(rbind,lst)或do.call(c,lst) - 甚至unlist(lst)。所以诀窍是将变量放入列表中。您可以使用'ls'返回所需变量的名称,然后对这些名称使用mget:
do.call(c,mget(ls(pattern =“a [0-9] +”)))
其中模式是一个正则表达式,用于查找全局环境中a123形式的所有变量。