R使用null函数进行tapply

时间:2016-05-23 12:39:03

标签: r tapply

tapply参数为FUN时,我无法理解null函数的作用。

documentation说:

  

如果FUN为NULL,则tapply返回一个向量,该向量可用于下标通常产生的多路数组。

例如,下面的文档示例是做什么的?

ind <- list(c(1, 2, 2), c("A", "A", "B"))
tapply(1:3, ind) #-> the split vector

我不明白结果:

[1] 1 2 4

感谢。

1 个答案:

答案 0 :(得分:3)

如果您使用指定的函数(非NULL)运行tapply,请说sum,就像在帮助中一样,您会看到结果是带有{{1的二维数组在一个单元格中:

NA

这意味着不存在一个因素组合,即(1,B)。当FUN为NULL时,它返回对应于所有当前因子组合的向量索引。要检查一下:

res <- tapply(1:3, ind, sum)
res
   A  B
 1 1 NA
 2 2  3

有一点需要注意的是,指定的函数可以返回NA本身,如下面的玩具示例所示:

> which(!is.na(res))
[1] 1 2 4

因此,一般来说,NA并不意味着没有因子组合。