如何在get函数中定义序列?

时间:2019-03-18 11:22:19

标签: r

可以说,我有这些对象:

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)))

如果我有很多向量,每个向量都包含数千个元素,第二种方法不是更有效吗?有第二种方法可以定义顺序吗?

谢谢

2 个答案:

答案 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