• R语言
  • 请问tapply函数中不带参数fun是什么意思

> da
year province sale
1 2007 A 1
2 2007 B 2
3 2007 C 3
4 2007 D 4
5 2008 A 5
6 2008 C 6
7 2008 D 7
8 2009 B 8
9 2009 C 9
10 2009 D 10
> tapply(sale,list(year,province))
> attach(da)
> tapply(sale,list(year,province))
[1] 1 4 7 10 2 8 11 6 9 12
并不是很懂你的意思,能说的再详细一些吗?最好的话能把你的问题描述一下
tapply(sale,list(year,province))我不理解它怎么得到这个结果的[1] 1 4 7 10 2 8 11 6 9 12
真的很感谢您能回答我的问题,并不是用来做什么,仅仅是不理解>tapply(sale,list(year,province))怎么能得到[1] 1 4 7 10 2 8 11 6 9 12,这里面的原因搞不清楚?
[未知用户]

在那种情况下tapply返回的是一个组索引,可以理解为。
> attach(da)
> ind=tapply(sale,list(year,province))
> ind
[1] 1 4 7 10 2 8 11 6 9 12
> nr=length(unique(year))
> nc=length(unique(province))
> lst=list(unique(year),unique(province))
> M=matrix(NA,nrow=nr,ncol=nc,dimnames=lst)
> M
A B C D
2007 NA NA NA NA
2008 NA NA NA NA
2009 NA NA NA NA
> a=0
> for(i in ind) {a=a+1; M=a}
> M
A B C D
2007 1 2 3 4
2008 5 NA 6 7
2009 NA 8 9 10
> detach(da)

由此可见,题目的目的是创建一个由year、province与sale所构成的列联表(各年份各省份的销售额)。

首先创建一个空白矩阵M,然后将sale的值填入其中,填入的顺序是按照tapply函数所返回的结果ind所指定的顺序。
4 天 后
[未知用户]
我不太懂for循环里的M=a,M是一个矩阵,a是一个数,然后这里的“=”表示什么意思,R语言的赋值是“<-”,所以“=”是什么意思呢?
[未知用户]

我在R中写的M后面紧跟一个带方括号的i,
也不知道是为什么,粘贴到回帖框后,竟变成了:
for(i in ind) {a=a+1; M=a}
好奇怪?!以前听说过吃代码的事,现在真的碰上了,这可怎么办?
求助版主,SOS!