如何解决从栅格中提取一些值作为矩阵,进行转换并将转换后的值放到原来的位置
假设我有一个光栅图像 x
:
library(raster)
x = raster(ncol=10,nrow=10,vals = c(rep(NA,10),rnorm(80),rep(NA,10)))
现在我将不是 NA
的行和列转换为 matrix
x_mat = raster::as.matrix(x)
x_mat_complete = x_mat[complete.cases(x_mat),]
这里我对矩阵 x_mat_complete
做了一些修改:
x_mat_complete_modified = x_mat_complete + 1
现在,我想要的是将 x_mat_complete_modified
放回原始光栅图像 x
中的位置,使 NA
像素保持不变。我不知道该怎么做。
换句话说,我想将光栅图像 x_mat_complete
中的 x_mat_complete_modified
替换为 x
,保持所有 NA
不变。
解决方法
您想要做什么似乎有点不确定 --- 可能有更好的方法来避免创建矩阵,但这里有一个解决方案。
具有微小更改的示例数据,以更好地说明完整案例的作用(删除所有包含至少一个 NA
的行)
library(raster)
set.seed(1)
x = raster(ncols=10,nrows=10,vals = c(rep(NA,8),rnorm(84),rep(NA,8)))
x_mat = raster::as.matrix(x)
解决方案
i = complete.cases(x_mat)
cc = x_mat[i,]
x[which(i),] = cc + 10
使用您的示例数据,您可以做到
set.seed(1)
x = raster(ncols=10,10),rnorm(80),10)))
y <- x + 10
请参阅 trim
以删除具有 NA 值的外部行和列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。