假设我有一个包含变量名的向量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))
答案 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