в чем смысл tapply(x,index), если нет FUN?

Я знаю значение 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  

какой смысл в tapply(dat$sale,list(dat$year,dat$province)), если в нем нет FUN?

> tapply(dat$sale,list(dat$year,dat$province))
[1]  1  1  4  7 10  2  8 11  6  9 12

это индексы, что означают 12 или 9 в результате?
в каком правиле я могу получить 12 или 9?как это вычислить?


person showkey    schedule 04.11.2013    source источник


Ответы (1)


С 1_:

FUN применяемая функция или NULL. В случае таких функций, как +, %*% и т. д., имя функции должно быть заключено в кавычки или заключено в кавычки. Если FUN равен NULL, tapply возвращает вектор, который можно использовать для индексации многоканального массива, который обычно создает tapply.

FUN по умолчанию равно NULL, поэтому вы получаете индексы.

Обратите внимание, что в R матрицы/массивы, подобные возвращаемым tapply, представляют собой просто векторы с размерами. Матрицы имеют основной столбец по умолчанию, поэтому вы получите ith элемент первого столбца, пока он не переместится во второй столбец:

> 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
person Ari B. Friedman    schedule 04.11.2013