15

我需要从下面的示例中替换NA光栅对象 ( r) 中的 's。

library(raster)
filename <- system.file("external/test.grd", package="raster")
r <- raster(filename)

我也尝试删除这些(并将结果放在 a 中data.frame),但无济于事。

dfr <- as.data.frame(r, na.rm=T)
summary(dfr)
# test       
# Min.   : 128.4  
# 1st Qu.: 293.2  
# Median : 371.4  
# Mean   : 423.2  
# 3rd Qu.: 499.8  
# Max.   :1805.8  
# NA's   :6097
4

2 回答 2

29

一种更安全的内存方法(对于大文件)是使用重新分类:

library(raster)
filename <- system.file("external/test.grd", package="raster")
r <- raster(filename)
rna <- reclassify(r, cbind(NA, 250))

这里有三种方法可以做到这一点terra

library(terra)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
x <- classify(r, cbind(NA, -99))
y <- subst(r, NA, -99)
z <- ifel(is.na(r), -99, r)
于 2013-02-16T07:20:14.470 回答
17

我不确定NA从对象中删除值是否有意义raster,但您可以轻松替换它。

例如:

oldpar <- par(mfrow=c(1, 2))
plot(r)
r[is.na(r)] <- 250
plot(r)
par(oldpar)

在此处输入图像描述


如果您真的想要,您可以将栅格值提取到向量中,然后删除这些NA值。(虽然,由于您丢失了空间信息,我看不出这有什么帮助。)

r <- raster(filename)

r <- values(r)
head(r)
[1] NA NA NA NA NA NA

head(na.omit(r))
[1] 633.686 712.545 654.162 604.442 857.256 755.506
于 2012-08-15T09:31:18.910 回答