在R中我试图从一个函数返回一对,其中对中的第一个元素是向量,第二个是映射。这是return语句:
returnList = list("kmeansVector" = kmV, "clustMap" = clustMap)
return(returnList)
在控制台中说我将li
设置为此函数的返回值。然后li[1]
会给我kmV
中的所有元素。我想要的是做l[1][3]
,它会给我kmV
中最初的第3个元素,但R告诉我它是null:
> li[1][3]
$<NA>
NULL
> attributes(li[1])
$names
[1] "kmeansVector"
kmV
是kmeans
个对象的5元素向量。因此,当函数返回列表时,kmV
中的每个元素都会连接在一起。如何获取最初位于kmV
答案 0 :(得分:3)
这个问题几乎肯定已经在Stack Overflow上得到了解答,但是我找不到它。所以这是一个本地答案:
如help(`[[`)
的帮助文件所述,在递归(类似列表)对象下
索引[类似于原子向量并选择一个列表 指定的元素。
两者[[和$选择列表中的单个元素。主要区别 是$ $不允许计算指数,而[[做。 x $名字是 相当于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