如何将存储在向量中的变量值分配给存储在 R 字符向量中的一系列变量名?

How to assign a variable values stored in a vector to a series of variable names stored in a character vector in R?

我正在尝试确定如何将存储在向量中的变量 a 值分配给 R 中存储在字符向量中的一系列变量名称?

这是我正在尝试做的一个玩具示例:我希望最终将值 1、2 和 3 分别存储在变量 A、B 和 C 中,以便 print(A) returns 1, print(B) returns 2, 等等 但是,我想将变量 A, B, and C 存储为字符称为 my_variables 的向量中的值。所以:

my_variables <-c("A", "B", "C")

我将值 1、2、3 存储在一个名为 my_values:

的向量中
my_values <-1:3

我尝试使用它,但它并没有按照我想要的方式工作:

   assign(my_variables, my_values)

这只是将 "A" "B" "C" 赋值给变量 my_variables,但没有赋值给变量 A

我可以用一个数组完成我想做的事情,但我想知道是否有更有效的方法来用向量化操作来完成这个?有没有比使用循环更好的方法来解决这个问题?

assign 没有向量化,所以你可以在这里使用 Map 指定环境。

Map(function(x, y) assign(x, y, envir = .GlobalEnv), my_variables, my_values)

A
#[1] 1
B
#[1] 2
C
#[1] 3

但是,在全局环境中使用此类变量并不是一个好习惯。

使用命名向量:

name_vec <- setNames(my_values, my_variables)
name_vec
#A B C 
#1 2 3 

或命名列表as.list(name_vec)

这样就可以了

val = 1:3
var = LETTERS[1:3]

l = as.list(val)
names(l) = var
list2env(l, envir = environment())