如何将变量键/值对添加到列表对象?
Posted
技术标签:
【中文标题】如何将变量键/值对添加到列表对象?【英文标题】:How to add variable key/value pair to list object? 【发布时间】:2010-11-09 11:47:49 【问题描述】:我有两个变量,key
和 value
,我想将它们作为键/值对添加到列表中:
key = "width"
value = 32
mylist = list()
mylist$key = value
结果是这样的:
mylist
# $key
# [1] 32
但我想要这个:
mylist
# $width
# [1] 32
我该怎么做?
【问题讨论】:
【参考方案1】:我们可以使用R的列表数据结构,以键值对的形式存储数据。
语法:
ObjectName<-list("key"= value)
例子:
mylist<-list("width"=32)
另外,参考示例:"https://github.com/WinVector/zmPDSwR/blob/master/Statlog/GCDSteps.R"
【讨论】:
【参考方案2】: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
【讨论】:
【参考方案3】:R 列表可以被认为是可以通过名称访问的对象的散列向量。使用这种方法,您可以向列表中添加一个新条目,如下所示:
key <- "width"
value <- 32
mylist <- list()
mylist[[ key ]] <- value
这里我们使用存储在变量 key 中的字符串来访问列表中的位置,就像使用存储在循环变量 i 中的值通过以下方式访问向量一样:
vector[ i ]
结果是:
myList
$width
[1] 32
【讨论】:
谢谢!我还不太了解这个索引运算符。虽然这里解释了:cran.r-project.org/doc/manuals/R-lang.html#Indexing,但没有描述你展示的用法。有没有正确描述的在线文档? 如果值是基本类型(例如单个数字、字符等),您可以使用常规数组,例如:x 【参考方案4】: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"
【讨论】:
以上是关于如何将变量键/值对添加到列表对象?的主要内容,如果未能解决你的问题,请参考以下文章