进行 Pearson 相关时,如何解决 R 中的以下错误?
How do I resolve an error below in R when doing a Pearson correlation?
这是错误信息:
"In writeBin(v, x@file@con, size = x@file@dsize) : problem writing
to connection 6: In .rasterFromRasterFile(grdfile, band = band,
objecttype) : size of values file does not match the number of cells
(given the data type)"
我有 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)
但是,我的结果还是出现了上面的错误,而且即使有输出,也似乎没有任何意义。
此错误信息:
writeBin(v, x@file@con, size = x@file@dsize) : problem writing to connection
很可能表明您的磁盘已满。这可能是您的工作目录所在的磁盘,或者您正在写入文件的任何其他位置。如果您没有指定文件名,您可以检查 tempfile()
以找到存储临时文件的一般位置(实际文件夹在会话之间更改)。您可以通过 rasterOptions()
更改此设置。您还可以通过向栅格函数提供 filename=
参数来避免写入临时文件。
这是错误信息:
"In writeBin(v, x@file@con, size = x@file@dsize) : problem writing to connection 6: In .rasterFromRasterFile(grdfile, band = band, objecttype) : size of values file does not match the number of cells (given the data type)"
我有 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)
但是,我的结果还是出现了上面的错误,而且即使有输出,也似乎没有任何意义。
此错误信息:
writeBin(v, x@file@con, size = x@file@dsize) : problem writing to connection
很可能表明您的磁盘已满。这可能是您的工作目录所在的磁盘,或者您正在写入文件的任何其他位置。如果您没有指定文件名,您可以检查 tempfile()
以找到存储临时文件的一般位置(实际文件夹在会话之间更改)。您可以通过 rasterOptions()
更改此设置。您还可以通过向栅格函数提供 filename=
参数来避免写入临时文件。