Как устранить ошибку ниже в R при выполнении корреляции Пирсона?
Это сообщение об ошибке:
"В writeBin(v, x@file@con, size = x@file@dsize): проблема записи в соединение 6: в.rasterFromRasterFile(grdfile, band = band, objecttype): размер файла значений не соответствует числу ячейки (с учетом типа данных)
У меня 15 растровых файлов одинакового экстента и размера. Я просто хочу выяснить корреляцию этих данных по времени (15 лет), то есть 15 растровых файлов.
Я использовал скрипт ниже:
list <- c(list.files(pattern = "\\.tif$"))
y <- stack()
for (i in 1:length(list)){
y <- stack(y,list[i]) }
corT <- layerStats(y, 'pearson', na.rm=TRUE)
ИЛИ Использовал сложенный файл прямо так
test = brick ("EOS_ALL_STACK.tif")
corT = layerStats(test, 'pearson', na.rm=TRUE)
Я также пытался использовать эту функцию, чтобы получить коэффициенты корреляции и R в квадрате, как это
fun5=function(x) { if (is.na(x[1])){ NA } else { m <- lm(x[1:15] ~ c(1:15));summary(m)$coefficients[1,4]}} #fstatistic[1]
fun5=function(x) { if (is.na(x[1])){ NA } else { m <- lm(x[1:15] ~ c(1:15));summary(m)$coefficients[2,4]}} #fstatistic[2]
fun3=function(x) { if (is.na(x[1])){ NA } else { m <- lm(x[1:15] ~ x[1:15]);summary(m)$r.squared }}
затем использовал "calc" для расчета их по всем пикселям. Например:
r.squared <- calc(y, fun3)
Тем не менее, мои результаты по-прежнему имеют вышеуказанные ошибки, и даже если есть выход, это, кажется, не имеет смысла.
1 ответ
Это сообщение об ошибке:
writeBin(v, x@file@con, size = x@file@dsize) : problem writing to connection
Скорее всего, указывает, что ваш диск заполнен. Это может быть диск вашего рабочего каталога или где-либо еще, где вы пишете файл. Если вы не указываете имя файла, вы можете проверить tempfile()
чтобы найти общее место, где хранятся временные файлы (фактическая папка меняется между сессиями). Вы можете изменить это через rasterOptions()
, Вы также можете избежать записи временных файлов, предоставив filename=
Аргумент к растровым функциям.