我有两个变量,key
和value
,我想将其添加为一个键/值对列表:如何将变量键/值对添加到列表对象?
key = "width"
value = 32
mylist = list()
mylist$key = value
结果是这样的:
mylist
# $key
# [1] 32
但我想这取而代之:
mylist
# $width
# [1] 32
我该怎么做?
我有两个变量,key
和value
,我想将其添加为一个键/值对列表:如何将变量键/值对添加到列表对象?
key = "width"
value = 32
mylist = list()
mylist$key = value
结果是这样的:
mylist
# $key
# [1] 32
但我想这取而代之:
mylist
# $width
# [1] 32
我该怎么做?
R列表可以被认为是可以按名称访问的对象的哈希向量。使用这种方法,可以将新条目添加到列表中,像这样:
key <- "width"
value <- 32
mylist <- list()
mylist[[ key ]] <- value
在这里,我们使用存储在可变密钥字符串来访问列表中的位置就像使用存储在循环变量i的值通过访问一个向量:
vector[ i ]
结果是:R中
myList
$width
[1] 32
列表元素可以被命名。所以你的情况只是做
> 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"
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
我们可以使用R的l ist数据结构以键值对的形式存储数据。
语法:
ObjectName<-list("key"= value)
例子:
mylist<-list("width"=32)
也,是指例如:"https://github.com/WinVector/zmPDSwR/blob/master/Statlog/GCDSteps.R"
谢谢!我还不太了解这个索引操作符。虽然这里解释了这个:http://cran.r-project.org/doc/manuals/R-lang.html#Indexing,你展示的用法没有描述。有没有任何在线文档,这是正确描述? – Frank 2009-07-10 03:49:32
如果这些值是基本类型(例如单个数字,字符等),则可以使用常规数组,例如:x < - c(1,4,2,5)。然后为每个索引值分配名称,如:names(x)< - c('a','b','c','d')。然后你可以将它们称为x ['a'],x ['b']等。 – JAponte 2016-10-18 02:39:33