我有两个变量key
和value
,我想将它们作为键/值对添加到列表中:
key = "width"
value = 32
mylist = list()
mylist$key = value
结果如下:
mylist
# $key
# [1] 32
但我想这样:
mylist
# $width
# [1] 32
我该怎么做?
答案 0 :(得分:64)
R列表可以被认为是可以通过名称访问的对象的哈希向量。使用此方法,您可以向列表添加新条目,如下所示:
key <- "width"
value <- 32
mylist <- list()
mylist[[ key ]] <- value
这里我们使用存储在变量键中的字符串来访问列表中的位置,就像使用存储在循环变量i中的值来访问矢量一样:
vector[ i ]
结果是:
myList
$width
[1] 32
答案 1 :(得分:15)
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
答案 2 :(得分:13)
可以命名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 :(得分:-1)
我们可以使用R的列表数据结构以键值对的形式存储数据。
语法:
ObjectName<-list("key"= value)
示例:
mylist<-list("width"=32)
另请参阅示例:"https://github.com/WinVector/zmPDSwR/blob/master/Statlog/GCDSteps.R"