当 FUN 参数为 null 时,我无法理解 tapply 函数的作用 .
FUN
null
tapply
documentation说:
如果FUN为NULL,则tapply返回一个向量,该向量可用于下标tapply正常生成的多路数组 .
例如,下面的文档示例是做什么的?
ind <- list(c(1, 2, 2), c("A", "A", "B")) tapply(1:3, ind) #-> the split vector
我不明白结果:
[1] 1 2 4
谢谢 .
如果你用指定的函数(不是NULL)运行 tapply ,比如说帮助中的 sum ,你会看到结果是一个单元格中带有 NA 的二维数组:
sum
NA
res <- tapply(1:3, ind, sum) res A B 1 1 NA 2 2 3
这意味着不存在一个因素组合,即(1,B) . 当FUN为NULL时,它返回对应于所有当前因子组合的向量索引 . 要检查一下:
> which(!is.na(res)) [1] 1 2 4
有一点需要注意的是,指定的函数可以返回NA本身,如下面的玩具示例所示:
> f <- function(x){ if(x[[1]] == 1) return(NA) return(sum(x)) } > tapply(1:3, ind, f) A B 1 NA NA 2 2 3
因此,一般而言,NA并不意味着不存在因子组合 .
1 回答
如果你用指定的函数(不是NULL)运行
tapply
,比如说帮助中的sum
,你会看到结果是一个单元格中带有NA
的二维数组:这意味着不存在一个因素组合,即(1,B) . 当FUN为NULL时,它返回对应于所有当前因子组合的向量索引 . 要检查一下:
有一点需要注意的是,指定的函数可以返回NA本身,如下面的玩具示例所示:
因此,一般而言,NA并不意味着不存在因子组合 .