How to add variable key/value pair to list object?


Question

I have two variables, key and value, and I want to add them as a key/value pair to a list:

key = "width"
value = 32

mylist = list()
mylist$key = value

The result is this:

mylist
# $key
# [1] 32

But I would like this instead:

mylist
# $width
# [1] 32

How can I do this?

1
51
12/17/2015 5:20:42 AM

Accepted Answer

R lists can be thought of as hashes- vectors of objects that can be accessed by name. Using this approach you can add a new entry to the list like so:

key <- "width"
value <- 32

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

Here we use the string stored in the variable key to access a position in the list much like using the value stored in a loop variable i to access a vector through:

vector[ i ]

The result is:

myList
$width
[1] 32
67
6/11/2014 7:59:24 AM

The setNames() built-in function makes it easy to create a hash from given key and value lists. (Thanks to Nick K for the better suggestion.)

Usage: hh <- setNames(as.list(values), keys)

Example:

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)

Then accessing the values through the keys is easy:

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

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon