Как назначить значения переменных, хранящиеся в векторе, в серии имен переменных, хранящихся в символьном векторе в R? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь определить, как присвоить переменной значения, хранящиеся в векторе, последовательности имен переменных, хранящихся в символьном векторе в R?

Вот игрушечный пример того, что я пытаюсь do: в конечном итоге я хотел бы иметь значения 1, 2 и 3, хранящиеся в переменных A, B и C соответственно, так что print(A) возвращает 1, print(B) возвращает 2 и др. c. Тем не менее, я хотел бы сохранить переменные 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.

Я могу выполнить sh что Я хочу сделать с массивом, но мне интересно, есть ли более эффективный способ сделать это с векторизованными операциями? Есть ли лучший способ приблизиться к этому, чем использовать al oop?

Ответы [ 2 ]

1 голос
/ 31 марта 2020

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

0 голосов
/ 31 марта 2020

Это сделает трюк

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

l = as.list(val)
names(l) = var
list2env(l, envir = environment())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...