Назначение имен в списке с помощью переменных?

Если у меня есть переменная, такая как name.string <- "name"Как я могу использовать это, чтобы назначить имя значения в списке, чтобы вернуть что-то вроде

$name
  [1] "value"

С помощью list(name.string = "value") возвращается $name.string [1] value,

И по причинам, которые я не могу понять, list(get("name.string") = "value") возвращается

Error: unexpected '=' in "list(get("name.string") =",

Очевидно, меня не интересует ручное решение (напишите "имя" в назначении), поскольку оно реплицируется для тысяч строк.

2 ответа

Решение

Вы можете получить доступ и назначить по номеру или имени, используя двойные скобки:

mylist                 <- list()
name.string            <- "name"
name.string2           <- "name2"
value                  <- "hello"
value2                 <- "world"

mylist[[name.string]]  <- value
mylist[[name.string2]] <- value2

# an alternative to the previous line
# that fails to create a name:
mylist[[2]]            <- value2 

Подробнее об этом виде назначения см. help("[[<-"),

Как сказал Мэтью Плурд, это динамически увеличивает ваш список, поэтому, возможно, было бы лучше предварительно выделить, например, mylist <- vector("list",2),

Ты можешь использовать:

structure(list('value'), names=name.string)

или же

l <- list('value')
names(l) <- name.string

или даже

within(list(), assign(name.string, 'value'))

But don't use this last one.

Другие вопросы по тегам