我有一个名为包含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