R,组合具有顺序名称的向量

时间:2017-10-26 13:22:35

标签: r vector stack

我想堆叠具有连续名称的向量。

例如,我有

a1<-1:3
a2<-4:6
a3<-7:9

我知道我能帮助你

z<-as.vector(rbind(a1,a2,a3))

如果我有100个as,a1,a2,a3,...,a100,我怎么能这样做?

谢谢!

3 个答案:

答案 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形式的所有变量。