57

我有两个变量keyvalue,我想将它们作为键/值对添加到列表中:

key = "width"
value = 32

mylist = list()
mylist$key = value

结果是这样的:

mylist
# $key
# [1] 32

但我想要这个:

mylist
# $width
# [1] 32

我怎样才能做到这一点?

4

4 回答 4

81

R 列表可以被认为是可以通过名称访问的对象的散列向量。使用这种方法,您可以向列表中添加一个新条目,如下所示:

key <- "width"
value <- 32

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

在这里,我们使用存储在变量 key 中的字符串来访问列表中的位置,就像使用存储在循环变量 i 中的值通过以下方式访问向量一样:

vector[ i ]

结果是:

myList
$width
[1] 32
于 2009-07-09T19:33:34.113 回答
21

setNames()内置函数可以轻松地从给定的键和值列表创建散列 。(感谢尼克 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
于 2015-07-08T16:53:00.250 回答
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"
于 2009-07-24T08:06:03.440 回答
0

我们可以使用 R 的列表数据结构,以键值对的形式存储数据。

句法:

ObjectName<-list("key"= value)

例子:

mylist<-list("width"=32)

另外,请参考示例:“https://github.com/WinVector/zmPDSwR/blob/master/Statlog/GCDSteps.R”

于 2017-10-21T19:48:28.233 回答