在所需变量名称的列表/向量上应用assign函数

时间:2018-05-04 13:33:56

标签: r

假设我有一个包含变量名的向量v1,我想为每个变量分配一个值(存储在单独的向量中)。如果没有迭代,我怎么能这样做?

v1 <- c("a","b","c")
v2 <- c(1,2,3)

没有循环我想要实现的目标:

for (i in 1:3){
  assign(v1[i],v2[i])
}

我觉得我与purrr:map2关系密切,但我尝试过不同的输入类,函数等,并且无法将变量写入内存。

map2(v1,v2,function(x,y) assign(x,y))

3 个答案:

答案 0 :(得分:4)

如果您真的想将它们放在全球环境中,可以使用

list2env(setNames(as.list(v2), v1), envir = .GlobalEnv) # no need for assign()

但我建议将它们保存在列表中:

vars <- setNames(as.list(v2), v1)

答案 1 :(得分:1)

您可以使用常规旧Map

Map(function(x,y) assign(x, y, envir = .GlobalEnv), v1, v2)

关键是如果你想在函数之外使用和查看这些变量,你需要指定分配它们的环境。在这种情况下,我选择了全局环境。

答案 2 :(得分:1)

这会将变量分配到当前环境中。如果不是您要分配的环境,请将environment()替换为您想要的任何环境。 <{1}}未使用。

junk