Присвоение объектам с использованием имен, созданных из вектора в R - PullRequest
0 голосов
/ 18 октября 2018

У меня есть два вектора:

years<-c(1995:1999)
values<-c(1:5)

Я хочу создать пять объектов с именами "Obj1995", "Obj1996" и т. Д. И назначить им значения в values в таком порядке, чтобыObj1995==1, Obj1996==2 и т. Д.

Я пытался использовать assign():

assign(paste0("Obj",years),values)

, но это не векторизация, поэтому он создал только один объект, содержащий все values:

In assign(paste0("Obj",years),values) :
  only the first element is used as variable name

Есть ли способ достичь моей цели без цикла?

1 Ответ

0 голосов
/ 18 октября 2018

Мы можем использовать list2env на named list

list2env(as.list(setNames(values, paste0("Obj", years))), envir = .GlobalEnv)

Obj1995
#[1] 1
Obj1996
#[1] 2

assign можно использовать с for петлей

rm(list = ls(pattern = "^Obj\\d{4}$")) # remove any objects 
for(i in seq_along(values)) assign(paste0("Obj", yearsi]), value = values[i])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...