【发布时间】:2016-05-23 12:39:03
【问题描述】:
当FUN 参数为null 时,我无法理解tapply 函数的作用。
如果 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
谢谢。
【问题讨论】:
-
参见
interaction(ind),它会生成“因子”“级别”的所有组合;在您的示例中,根据“INDEX”参数,您得到的输出对应于levels(interaction(ind))[c(1, 2, 4)]中的“X”匹配。另请参阅tapply(1:5, list(c(1, 2, 2, 2, 1), c("A", "A", "B", "B", "A"))),可以更清楚地看到tapply按“索引”分组“X” -
ix <- tapply(X, INDEX)的结果不依赖于X-- 仅依赖于INDEX-- 特别是,如果INDEX是一个列表,那么ix等于as.integer(do.call(interaction, INDEX))