如何将变量键/值对添加到列表对象?

Posted

技术标签:

【中文标题】如何将变量键/值对添加到列表对象?【英文标题】:How to add variable key/value pair to list object? 【发布时间】:2010-11-09 11:47:49 【问题描述】:

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

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"

【讨论】:

以上是关于如何将变量键/值对添加到列表对象?的主要内容,如果未能解决你的问题,请参考以下文章

怎么解决 ? (将列表添加到列数据框pyspark)

Redis设计与实现3 哈希对象( ziplist /hashtable)

如何从字典列表中向现有键值对添加新的键值对?

双向将字符串的“虚拟”列表绑定到列

如何遍历对象数组并制作键值对?

附加到 [character: [object]] 的字典返回 0 键/值对