悬赏 5 个论坛币 未解决
在运行以下代码的时候会出现Error in x$depth : $ operator is invalid for atomic vectors的错误提示
我想根据enzy中的depth这一列的属性把计算结果录入在不同的行,如果只使用if else则只能赋值前4行,使用sapply函数又会出现上面的错误提示,有没有大神教下这代码要怎么改
me<-function(x){a<-matrix(1:20, nrow=16,ncol=5)
if(x$depth=="A"){
for (i in 1:5){
a[1:4,i]<- tapply(x[,i+5],x[,2],mean)}
}elseif(x$depth=="B"){
for (i in 1:5){
a[5:8,i]<-tapply(x[,i+5],x[,2],mean) }
}elseif(x$depth=="C"){
for (i in 1:5){
a[9:12,i]<-tapply(x[,i+5],x[,2],mean) }
}else {
for (i in 1:5){
a[13:16,i]<- tapply(x[,i+5],x[,2],mean) }
}
colnames(a)<-names(x[,6:10])
rownames(a)<-rep(names(tapply(x[,6],x[,2],mean)),4)
return(a)
}
enzy<-sapply(enzy,me)