有人知道我的代码有什么问题吗?我编辑了帖子,因为我没有给你数据。我想计算sd。平均数的计算成功了。
这里是裁剪后的数据的链接。
https:/drive.google.comdrivefolders1ljT1fzaDlSmn_3j7zHshS5lrV1wBvVQD。
library(raster)
r <- brick("filename")
#mean
mean <- mean(r)
#sd
standard_dev <- sd(r)
standard_dev2 <- sd(r, na.rm =TRUE)
standard_deviation <- calc(r, sd)
你想计算RasterBrick中每个单元的SD。
总是包括一个自足的,最小的可重复的例子。你可以从你所使用的软件包的手册中的例子开始,比如这个
library(raster)
b <- brick(system.file("external/rlogo.grd", package="raster"))
解决办法
x <- calc(b, sd)
x
class : RasterLayer
dimensions : 77, 101, 7777 (nrow, ncol, ncell)
resolution : 1, 1 (x, y)
extent : 0, 101, 0, 77 (xmin, xmax, ymin, ymax)
crs : +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
source : memory
names : layer
values : 0, 38.5746 (min, max)
看来这对你来说是行不通的,因为你有一个叫做 "RasterLayer "的RasterLayer。sd
sd <- b
calc(b, sd)
#Error in (function (classes, fdef, mtable) :
# unable to find an inherited method for function ‘calc’ for signature ‘"RasterBrick", "RasterBrick"’
在这种情况下,你可以更明确地使用函数 namespace
(统计)
calc(b, stats::sd)
然后它又能如期工作
功能:该函数计算x中数值的标准差。sd(x, na.rm = FALSE)
如果 na.rm 为 TRUE,则在计算前删除缺失值。
参数
x:一个数值向量或R对象,但不是一个可通过as.double(x)转为数值的因子。
na.rm:逻辑。丢失的值是否应该被删除?
例子
sd(1:2) ^ 2
取自使用RStudio访问帮助文档。
?sd()
针对您的情况。
standard_deviation <- sd(r)
如果您能提供给我们以下信息,我们可能会进一步帮助您。可复制的例子.