global()我正在尝试使用terra 包中的函数来计算 spatRaster 中的非 NA 值。"isNA"除了和之外,所有函数(mean、max、sd 等)似乎都可以工作"notNA"。对于这两个函数,它返回此错误:Error in fun(values(x[[i]]), ...) : could not find function "fun",这与它为拼写错误/不存在的函数返回的错误相同。
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
Run Code Online (Sandbox Code Playgroud)
有趣的是,在查看文档 ( ?global) 时,函数描述中对 NA 函数进行了命名,但并未专门列为 的参数选项fun。
那么可以global()计算 NA/非 NA 吗?NA 函数名称是否正确?
编辑:大地版本:1.4.22
您的 版本terra可能已过时,并且不包含功能isNA或notNA。您可以在Terra rastermethods中查看当前版本源代码中的函数(该global函数的第 2551 至 2639 行)。
我目前正在运行的版本1.5.21,功能运行良好。
packageVersion("terra")\n#[1] \xe2\x80\x981.5.21\xe2\x80\x99\n\nglobal(r, fun="isNA")\n# isNA\n#lyr.1 1\n\nglobal(r, fun="notNA")\n# notNA\n#lyr.1 99\nRun Code Online (Sandbox Code Playgroud)\n您可以使用以下命令更新包并重新加载库:
\ninstall.packages("terra")\nlibrary(terra)\nRun Code Online (Sandbox Code Playgroud)\n