R返回一对

时间:2013-04-18 23:00:40

标签: r list return

在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"

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

的第3个元素

1 个答案:

答案 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