R、 组合具有连续名称的向量

R、 组合具有连续名称的向量,r,vector,stack,R,Vector,Stack,我想把有顺序名称的向量叠加起来 例如,我有 a1<-1:3 a2<-4:6 a3<-7:9 a1您可以使用get()访问变量。 您的示例如下所示: a_list <- list() for(i in 1:3){ a_list[[i]] <- get(paste0("a",i)) } z <- as.vector(do.call("rbind",a_list)) 然后,您可以执行此操作,例如1:100中的i或您需要的任何操作。我们可以使用mget。

我想把有顺序名称的向量叠加起来

例如,我有

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

a1您可以使用
get()
访问变量。 您的示例如下所示:

a_list <- list()
for(i in 1:3){
    a_list[[i]] <- get(paste0("a",i))
}

z <- as.vector(do.call("rbind",a_list))

然后,您可以执行此操作,例如1:100中的
i或您需要的任何操作。

我们可以使用
mget
。以下结果与示例代码的输出相同。然后可以将
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

如果您将它们都作为列表“lst”的成员,那么您可以简单地调用do.call(rbind,lst)或do.call(c,lst)甚至unlist(lst)。所以诀窍是将变量放入一个列表中。您可以使用“ls”返回所需变量的名称,然后在这些名称上使用mget:

do.call(c,mget(ls(pattern=“a[0-9]+”))


其中模式是一个正则表达式,用于在全局环境中查找所有a123形式的变量。

您的预期输出是什么?很好,我不知道
mget
。谢谢。当我这样做时,“What”必须是函数或字符串,消息就出来了。你能再帮我一点忙吗?“c”通常是一个函数,所以你可能已经重新定义了它?试着去做。打电话(rbind,…)看看效果是否更好。
as.vector(do.call("rbind",lapply(1:3,function(x){get(paste0("a",x))})))
as.vector(matrix(unlist(mget(paste0("a", 1:3))), ncol = 3, byrow = TRUE))
[1] 1 4 7 2 5 8 3 6 9