Я выполняю геостатистическую интерполяцию в R на матрице 5600 x 5700 и, несмотря на доступную память, получаю сообщение об ошибке «Использование стека C слишком близко к пределу».
Есть несколько вопросов SO, связанных с этой проблемой, включая this один и вот этот. Эти и другие источники, которые я видел в Интернете, предполагают, что изменение размера стека часто решает эту проблему. Некоторые предлагали такое изменение: R_CStackLimit = (uintptr_t)-1
в файле "Rinterface.h". Однако я работаю в Windows 7 (x64), использую R 2.15.3 (x64) через модуль Rpy2
(v 2.3.6 x64 через Christoph Gohlke) в Python 2.7, а "Rinterface.h" не найден. Как я могу иначе изменить свой эффективный предел стека для R?
Код, который я запускаю для интерполяции, выглядит следующим образом (за исключением того, что я завернул его в функцию):
d <- read.table(wd,header=TRUE,sep=',')
d <- na.omit(d)
coordinates(d) <- ~ longdd+latdd ## convert simple data frame into a spatial data frame object
proj4string(d) <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
stations <- spTransform(d, CRS(utm19))
names(stations@data)[1] <- "stations"
grids <- readGDAL("dem.asc")
names(grids) <- "dem"
grids$dsea <- readGDAL("dsea.asc")$band1
proj4string(grids) <- CRS(utm19)
ov <- overlay(grids, stations)
stations$dem = ov$dem
stations$dsea = ov$dsea
stations <- stations[!is.na(stations$dsea),]
vgm <- vgm(model="Sph",range=25000)
v <- variogram(air_temp_max_c~dem+dsea,stations)
vgm_max_r<-fit.variogram(v, model=vgm)
temp_uk <- krige(air_temp_max_c~dem+dsea, locations=stations, newdata=grids, model=vgm_max_r)
write.asciigrid(temp_uk[1],outmax)
max_cv <- krige.cv(air_temp_max_c~dem+dsea, locations=stations, vgm_max_r)
max_cv <-data.frame(max_cv)
max_cv["date"] <- dt
max_cv["gs"] <- gs
max_cv["parameter"] <- "air_temp_max_c"
write.table(max_cv,file=<outFile>,sep=",",row.names=F)
import rpy2; print(rpy2.__version__)
) - person lgautier   schedule 02.06.2013