gpt4 book ai didi

r - 我如何计算标准差? as.double(x) : cannot coerce type 'S4' to vector of type 'double' 中的错误

转载 作者:行者123 更新时间:2023-12-04 09:40:46 29 4
gpt4 key购买 nike

有人知道我的代码有什么问题吗?我编辑了帖子,因为我没有给你数据。我想计算标准差。平均值的计算有效。

这是裁剪数据的链接:

https://drive.google.com/drive/folders/1ljT1fzaDlSmn_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)

这似乎对您不起作用,因为您有一个名为 sd 的 RasterLayer
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)

然后它再次按预期工作

关于r - 我如何计算标准差? as.double(x) : cannot coerce type 'S4' to vector of type 'double' 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62344170/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com