(b2) という行列があり、3565 行と 125 列があり、二分値 (0 と 1) のみが含まれています。
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 x 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.
誰でもこの問題を克服するのを手伝ってもらえますか?