R语言stars包0.5-4版本无法调用split方法问题咨询
stars包split函数查询不到的问题原因
- 该问题属于R语言S3泛型方法的正常设计逻辑,既不是文档错误,也不是函数缺失。split本身是R base包定义的通用泛型函数,stars包仅提供针对stars类对象的S3适配方法
split.stars,该方法默认不会作为stars包的公开导出对象暴露在命名空间中,因此直接调用stars::split或直接检索split.stars对象时会提示不存在。 - 帮助文档可检索到相关说明是因为stars包的文档已将配套S3方法的使用说明整合到了包功能索引中,属于正常的文档设计。
- 后续功能可正常运行的原因是:只要完成stars包加载,直接对stars类对象调用base包的
split()泛型函数时,R会自动根据输入对象的类属性匹配到stars包内置的split.stars方法执行,不需要用户显式调用未导出的方法,常规使用示例如下:
library(stars) # 读取示例栅格数据 sample_rast <- read_stars(system.file("tif/L7_ETMs.tif", package = "stars")) # 直接调用split泛型即可自动适配stars方法,按波段分割 rast_split <- split(sample_rast, "band")
- 若有特殊场景需要显式调用该方法,可通过R的三冒号语法访问包内部未导出对象:
stars:::split.stars,但该用法不符合S3方法的常规使用规范,非必要不推荐。 - 偶现加载包后调用split仍不生效的情况,多为R会话环境冲突、包加载异常导致,重启R会话重新加载stars包即可解决,这也是你后续功能自行恢复正常的常见诱因。
内容的提问来源于stack exchange,提问作者Vojta Bartak
相关产品推荐
相关产品推荐

