我有一個名爲包含3565行和125列,只有兩分的值(0和1)自定義功能,它告訴我,我的函數不是一個函數
(B2)矩陣我設計了一個功能比較行i
和行i+1
並存儲在一個新的矢量差數。
loopPhudcf <- function(x){
## create a vector to store the results of your for loop
output <- as.vector(rep(0, length(x[,1])))
for (i in 1:(nrow(x))-1) {
output[i]<-as.vector(table(x[i,]==x[i+1,]))[1]
}
a<-nrow(x)
b<-nrow(x)-1
output<-t(as.matrix(output[c(a,1:b)]))
output[output==ncol(x)]<-0
return(output)
}
phudcfily123<-loopPhudcf(b2)
功能工作正常,但我也有我使用添加到我原來的矩陣的ID變量:b2<-transform(b2,id=a$id)
,然後導致3565由126是最後一個id變量
我想使用ddply {} plyr申請我的功能,但要做到這一點,我需要子集只是我的原始矩陣無ID變量(as.matrix(b2[,1:(ncol(b2)-1)])
),但它口口聲聲說我的函數不是一個函數:(
x <- ddply(.data = b2, .var = c("id"), .fun = loopPhudcf(as.matrix(b2[,1:(ncol(b2)-1)])))
Error in llply(.data = .data, .fun = .fun, ..., .progress = .progress, :
.fun is not a function.
任何人都可以幫助我克服這個問題問題?
輝煌!!!謝謝布萊恩,它工作完美。我還用另一種方式達到了預期的效果,我將在下面展示!再次感謝你! – 2012-07-20 00:59:58