R 的带有 null 函数的 tapply

标签 r tapply

我无法理解当 FUN 参数为 nulltapply 函数的作用。

documentation说:

If FUN is NULL, tapply returns a vector which can be used to subscript the multi-way array tapply normally produces.

例如,以下文档示例的作用是什么?

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:

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 并不意味着不存在某个因素组合。

关于R 的带有 null 函数的 tapply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37391261/

相关文章:

R : Percentile 90% with tapply

R-tapply 不保持日期格式

r - R中有连接tapply和round的函数吗?

arrays - 在 R data.table 中快速操作字符数组

regex - 提取某个单词后的数字

r - 如何在r中的散点图中添加箭头?

r - 自定义 rcpp last 函数使用 dplyr group_by 变慢并与 tapply 相比进行总结

rvest::html_nodes 返回部分列表(仅少数项目)

r - 数字的近似匹配函数

r - 按组计算准确度