I have 4,000 volume records on tree plantations. I need to calculate Moran I for the entire plantation. I use the ape library because spdep is considered slower. My code is:
# Modified from http://www.ats.ucla.edu/stat/r/faq/morans_i.htm require(ape) df <- data.frame( x = 1:2000, y = 1:2000, v = rnorm(4000, mean=4) ) df.dists <- as.matrix(dist(cbind(df$x, df$y))) df.dists.inv <- 1/df.dists diag(df.dists.inv) <- 0 Moran.I(df$v, df.dists.inv)
When I run the code, I get overflow errors.
*Error in if (obs <= ei) 2 * pv else 2 * (1 - pv) : missing value where TRUE/FALSE needed*
Using ff library
require(ape) require(ff) ffdf <- as.ffdf(df) ffdf.dists <- as.matrix(dist(cbind(ffdf$x, ffdf$y))) ffdf.dists.inv <- 1/df.dists diag(ffdf.dists.inv) <- 0 Moran.I(ffdf$v, ffdf.dists.inv)
Additional error messages:
*Error in x - m : non-numeric argument to binary operator In addition: Warning message: In mean.default(x) : argument is not numeric or logical: returning NA*
How can I get calculation on the whole plantation?
Use sdep instead of ape .
How does the parallel library solve this problem?
Thanks in advance Juan
parallel-processing r ape-phylo spdep
jlopez
source share