可以说,我有这些对象:
v1=11:12; v2=13:14; v3=15:16
我可以使用以下两种方法之一来组合它们:
combined = c(); for(i in 1:3) combined=c(combined, get(paste0("v", i)))
# or
combined = c(get(paste0("v", 1)), get(paste0("v", 2)), get(paste0("v", 3)))
如果我有很多向量,每个向量都包含数千个元素,第二种方法不是更有效吗?有第二种方法可以定义顺序吗?
谢谢
答案 0 :(得分:0)
我们可以使用mget
返回list
中所有对象(字符串'v1','v2','v3')的值,然后与do.call
连接
do.call(c, mget(paste0("v", 1:3)))
这也可以用ls
do.call(c, mget(ls(pattern = "^v\\d+")))
答案 1 :(得分:0)
您可以使用mget()
定义多个对象名称,并使用unlist()
转换为单个向量
v1=11:12; v2=13:14; v3=15:16
combined = unlist(mget(paste0("v", 1:3)), use.names = F)
如果要得到带有命名元素的组合向量,只需更新use.names = T
。