我在代码中知道tapply(dat$sale,list(dat$year,dat$province),sum)
的含义:
> dat=data.frame(
+ year=c(rep(2007,5),rep(2008,3),rep(2009,3)),
+ province=c("a","a","b","c","d","a","c","d","b","c","d"),
+ sale=1:11)
> tapply(dat$sale,list(dat$year,dat$province),sum)
a b c d
2007 3 3 4 5
2008 6 NA 7 8
2009 NA 9 10 11
如果没有FUN,tapply(dat$sale,list(dat$year,dat$province))
的含义是什么?
> tapply(dat$sale,list(dat$year,dat$province))
[1] 1 1 4 7 10 2 8 11 6 9 12
它是下标,结果中12
或9
的含义是什么?
我可以在哪个规则中获得12
或9
?如何计算它?
答案 0 :(得分:8)
来自?tapply
:
FUN要应用的函数,或NULL。在功能的情况下 如+,%*%等,函数名称必须反引用或引用。如果 FUN为NULL,tapply返回一个可用于下标的向量 多路数组tapply通常会产生。
FUN
默认为NULL
,因此您可以获得下标。
请注意,在R矩阵/数组中,如tapply
返回的那些,只是具有维度的向量。矩阵为column-major by default,因此您将获得第一列的i
元素,直到它回绕到第二列:
> mat <- matrix(seq(9),ncol=3)
> mat
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> mat[4]
[1] 4