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