如何使用 terra 的全局函数计算 NA?
How to count NAs using terra's global function?
我正在尝试使用 terra 包中的 global()
函数计算 spatRaster 中的非 NA 值。除了 "isNA"
和 "notNA"
之外,所有函数(均值、最大值、标准差等)似乎都有效。对于这两个函数,它 returns 此错误:Error in fun(values(x[[i]]), ...) : could not find function "fun"
,这与 returns 对于 misspelled/non-existent 函数的错误相同。
r <- rast(ncols=10, nrows=10)
values(r) <- c(1:(ncell(r)-1),NA) # Add one NA value
global(r, fun="mean", na.rm=TRUE) # works
global(r, fun="notNA") # error
global(r, fun="notAfunction") # error
有趣的是,在查看文档 (?global
) 时,NA 函数在函数描述中被命名,但没有具体列为 fun
.
的参数选项
那么global()
可以算NAs/non-NAs吗? NA 函数名称是否正确?
编辑:
地形版本:1.4.22
当我运行你的代码时,它确实有效:
library(terra)
r <- rast(ncols=10, nrows=10)
values(r) <- c(1:(ncell(r)-1),NA)
global(r, fun="mean", na.rm=TRUE)
global(r, fun="isNA")
global(r, fun="notNA")
isNA
的输出:
isNA
lyr.1 1
notNA
的输出:
notNA
lyr.1 99
您的 terra
版本可能已过时并且不包含函数 isNA
或 notNA
。您可以在 Terra raster methods 查看当前版本源代码中的功能(global
功能的第 2551 至 2639 行)。
我目前是运行版本1.5.21
,功能正常。
packageVersion("terra")
#[1] ‘1.5.21’
global(r, fun="isNA")
# isNA
#lyr.1 1
global(r, fun="notNA")
# notNA
#lyr.1 99
您可以使用以下方法更新包并重新加载库:
install.packages("terra")
library(terra)
我正在尝试使用 terra 包中的 global()
函数计算 spatRaster 中的非 NA 值。除了 "isNA"
和 "notNA"
之外,所有函数(均值、最大值、标准差等)似乎都有效。对于这两个函数,它 returns 此错误:Error in fun(values(x[[i]]), ...) : could not find function "fun"
,这与 returns 对于 misspelled/non-existent 函数的错误相同。
r <- rast(ncols=10, nrows=10)
values(r) <- c(1:(ncell(r)-1),NA) # Add one NA value
global(r, fun="mean", na.rm=TRUE) # works
global(r, fun="notNA") # error
global(r, fun="notAfunction") # error
有趣的是,在查看文档 (?global
) 时,NA 函数在函数描述中被命名,但没有具体列为 fun
.
那么global()
可以算NAs/non-NAs吗? NA 函数名称是否正确?
编辑: 地形版本:1.4.22
当我运行你的代码时,它确实有效:
library(terra)
r <- rast(ncols=10, nrows=10)
values(r) <- c(1:(ncell(r)-1),NA)
global(r, fun="mean", na.rm=TRUE)
global(r, fun="isNA")
global(r, fun="notNA")
isNA
的输出:
isNA
lyr.1 1
notNA
的输出:
notNA
lyr.1 99
您的 terra
版本可能已过时并且不包含函数 isNA
或 notNA
。您可以在 Terra raster methods 查看当前版本源代码中的功能(global
功能的第 2551 至 2639 行)。
我目前是运行版本1.5.21
,功能正常。
packageVersion("terra")
#[1] ‘1.5.21’
global(r, fun="isNA")
# isNA
#lyr.1 1
global(r, fun="notNA")
# notNA
#lyr.1 99
您可以使用以下方法更新包并重新加载库:
install.packages("terra")
library(terra)