Подтвердить что ты не робот

Добавление к списку с динамическими именами, R

У меня есть список в R:

a <- list(n1 = "hi", n2 = "hello")

Я хотел бы добавить этот список, но имена должны быть динамическими. То есть они создаются из строки (например: paste("another","name",sep="_")

Я пробовал делать это, что не работает:

c(a, parse(text="paste(\"another\",\"name\",sep=\"_\")=\"hola\"")

Каков правильный способ сделать это? Конечная цель - просто добавить в этот список и динамически выбрать мои имена.

4b9b3361

Ответ 1

Вы можете просто использовать индексирование с двойными скобками. Любой из следующих методов должен работать.

a <- list(n1 = "hi", n2 = "hello")
val <- "another name"
a[[val]] <- "hola"
a
#$n1
#[1] "hi"
#
#$n2
#[1] "hello"
#
#$`another name`
#[1] "hola"

 a[[paste("blah", "ok", sep = "_")]] <- "hey"
 a
#$n1
#[1] "hi"
#
#$n2
#[1] "hello"
#
#$`another name`
#[1] "hola"
#
#$blah_ok
#[1] "hey"

Ответ 2

Вы можете использовать setNames для установки имен на лету:

a <- list(n1 = "hi", n2 = "hello")
c(a,setNames(list("hola"),paste("another","name",sep="_")))

Результат:

$n1
[1] "hi"

$n2
[1] "hello"

$another_name
[1] "hola"