如果没有FUN,tapply(x,index)的含义是什么?

时间:2013-11-04 00:53:28

标签: r tapply

我在代码中知道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

它是下标,结果中129的含义是什么?
我可以在哪个规则中获得129?如何计算它?

1 个答案:

答案 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