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

Как добавить пару ключ/значение переменной в список объектов?

У меня есть две переменные, key и value, и я хочу добавить их в качестве пары ключ/значение в список:

key = "width"
value = 32

mylist = list()
mylist$key = value

В результате получится следующее:

mylist
# $key
# [1] 32

Но я хотел бы это вместо этого:

mylist
# $width
# [1] 32

Как я могу это сделать?

4b9b3361

Ответ 1

R-списки можно рассматривать как хэш-векторы объектов, к которым можно получить доступ по имени. Используя этот подход, вы можете добавить новую запись в список следующим образом:

key <- "width"
value <- 32

mylist <- list()
mylist[[ key ]] <- value

Здесь мы используем строку, хранящуюся в ключе переменной, чтобы получить доступ к позиции в списке, подобно использованию значения, хранящегося в переменной цикла i, для доступа к вектору через:

vector[ i ]

Результат:

myList
$width
[1] 32

Ответ 2

Элементы списка в R можно назвать. Так что в вашем случае просто

 > mylist = list()
 > mylist$width = value

Когда R встречает этот код

> l$somename=something

где l - список. Он добавляет в список элемент что-то и называет его именем somename. Доступ к нему можно получить с помощью

> l[["somename"]]

или

> l$somename

Имя может быть изменено с именами команд:

> names(l)[names(l)=="somename"] <- "othername"

Или, если теперь позиция элемента в списке:

> names(l)[1] <- "someothername"

Ответ 3

Встроенная функция setNames() упрощает создание хеша из заданных списков ключей и значений. (Спасибо Nick K за лучшее предложение.)

Использование: hh <- setNames(as.list(values), keys)

Пример:

players <- c("bob", "tom", "tim", "tony", "tiny", "hubert", "herbert")
rankings <- c(0.2027, 0.2187, 0.0378, 0.3334, 0.0161, 0.0555, 0.1357)
league <- setNames(as.list(rankings), players)

Тогда доступ к значениям через клавиши легко:

league$bob
 [1] 0.2027
league$hubert
 [1] 0.0555

Ответ 4

Мы можем использовать структуру данных списка R для хранения данных в форме пары ключ-значение.

Синтаксис:

ObjectName<-list("key"= value)

Пример:

mylist<-list("width"=32)

также см. пример: "https://github.com/WinVector/zmPDSwR/blob/master/Statlog/GCDSteps.R"