我正在使用输入类型为num的
的矩阵变换来跟踪一些代码> input
1 101.3862407 63.8025351
2 -39.2936491 0.3279252
3 -2.5526003 1.8761791
4 36.1441720 45.3625071
....
转换矩阵:
transfmatrix <- matrix(c(0.9,-0.1,0.1,0.9),nrow=2)
> transfmatrix
[,1] [,2]
[1,] 0.9 0.1
[2,] -0.1 0.9
然后我可以使用:
进行数据转换# transformation
result <-input%*%transfmatrix
这很好用,但我想&#34;输入&#34;成为光栅文件。 是否可以对栅格图层应用类似的转换?我尝试了以下方法:
library(raster)
r <- raster(ncol=40, nrow=20)
r[] <- rnorm(n=ncell(r))
test1<-stack(r,r*2)
test2 <- test1%*%transfmatrix
但收到错误:
Error in test1 %*% transf.m :
requires numeric/complex matrix/vector arguments
答案 0 :(得分:1)
您需要根据数据制作一个2列矩阵,乘以2x2矩阵。也许这个:
> z = as.matrix(test1) %*% transf.m
> dim(z)
[1] 800 2
这是来自test1
的800个单元格的800x2矩阵。
如果你想要一个带有值的栅格堆栈,那么,覆盖test1
,请执行:
> test1[[1]][]=z[,1]
> test1[[2]][]=z[,2]