I have a matrix called (b2) that contains 3565 rows and 125 columns with only dichotomous values (0 and 1)
I designed a function to compare row i
and row i+1
and store the number of differences in a new vector.
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)
The function works fine, but I also have an ID variable which I added to my original matrix using: b2<-transform(b2,id=a$id)
, then resulting in a 3565 by 126 being the last one the id variable
I wanted to apply my function using ddply {plyr} but to do this i need to subset only my original matrix without the ID variable (as.matrix(b2[,1:(ncol(b2)-1)])
) but it keeps saying that my function is not a function :(
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.
can anyone help me overcome this issue?