0

在 RI 中,我试图从函数中返回一对,其中第一个元素是向量,第二个元素是映射。这是返回语句:

returnList = list("kmeansVector" = kmV, "clustMap" = clustMap)
return(returnList)

在控制台中说我设置li了这个函数的返回值。然后li[1]会给我所有的元素kmV。我想要做l[1][3]的是给我最初的第三个元素,kmV但 R 告诉我它是空的:

> li[1][3]
$<NA>
NULL

> attributes(li[1])
$names
[1] "kmeansVector"

kmVkmeans对象的 5 元素向量。因此,当函数返回列表时,似乎每个元素kmV都连接在一起。如何获得最初位于的第 3 个元素kmV

4

1 回答 1

3

这个问题几乎可以肯定之前在 Stack Overflow 上已经得到了回答,但我找不到它。所以这里有一个本地答案:

如帮助文件所述help(`[[`),在Recursive (list-like) objects下:

[ 索引类似于原子向量并选择指定元素的列表。

[[ 和 $ 都选择列表的单个元素。主要区别在于 $ 不允许计算索引,而 [[ 允许。x$name 等价于 x[["name", exact = FALSE]]。此外,[[ 的部分匹配行为可以使用精确参数来控制。

在列表上使用会[返回一个列表,因为[可以抓取列表中的多个元素。使用[[将返回该列表的元素。

这是一个应该有助于解释的示例。下面a是两个元素的列表。

> a <- list(1:4,letters[24:26])
> a
[[1]]
[1] 1 2 3 4

[[2]]
[1] "x" "y" "z"

> a[1:2]
[[1]]
[1] 1 2 3 4

[[2]]
[1] "x" "y" "z"

> a[1] #returns a list of length 1 containing the first element
[[1]]
[1] 1 2 3 4

> a[[1]] #returns the first element
[1] 1 2 3 4

> a[[1:2]] #equivalent to a[[1]][[2]]
[1] 2
于 2013-04-18T23:14:49.793 回答