Как добавить пару ключ/значение переменной в список объектов?
У меня есть две переменные, key
и value
, и я хочу добавить их в качестве пары ключ/значение в список:
key = "width"
value = 32
mylist = list()
mylist$key = value
В результате получится следующее:
mylist
# $key
# [1] 32
Но я хотел бы это вместо этого:
mylist
# $width
# [1] 32
Как я могу это сделать?
Ответы
Ответ 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"