Назначение имен в списке с помощью переменных?
Если у меня есть переменная, такая как 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.