У меня есть 4000 записей объема в плантации деревьев. Мне нужно рассчитать Морана I для всей плантации. Я использую библиотеку ape, потому что spdep считается медленнее. Мой код таков:
# 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)
Когда я запускаю код, я получаю ошибки, похожие на переполнение.
*Error in if (obs <= ei) 2 * pv else 2 * (1 - pv) :
missing value where TRUE/FALSE needed*
Использование библиотеки ff
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)
Дополнительные сообщения об ошибках:
*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*
Как я могу получить расчет на всю плантацию?
Должен ли я использовать sdep вместо библиотеки ape?
Как библиотека parallel может решить эту проблему?
Заранее спасибо Хуан
set.seed
сделать вашу проблему воспроизводимой. Нет необходимости использовать большую матрицу (вы можете использовать маленькую матрицу, и вы столкнетесь с той же проблемой, если у вас есть несколько бесконечных значений). - person agstudy   schedule 21.09.2013