根据栅格图层名称上的某种模式,从栅格堆栈中选择栅格图层。

4

我在R中有一个栅格堆叠,包含499个图层。每个图层都有特定的名称模式。

[1] "Sacharovi_PA1_RUN1_GAM"               "Sacharovi_PA1_RUN1_GLM"              
[3] "Sacharovi_PA1_RUN1_RF"                "Sacharovi_PA1_RUN1_CTA"              
[5] "Sacharovi_PA1_RUN1_MAXENT.Phillips"   "Sacharovi_PA1_RUN2_GAM"              
[7] "Sacharovi_PA1_RUN2_GLM"               "Sacharovi_PA1_RUN2_RF"               
[9] "Sacharovi_PA1_RUN2_CTA"                 

我想做的是将每个模型(GAM,RF,GLM,CTA,MAXENT)保存到不同的堆栈中。如何选择我想要的模型(包含单词“GAM” / “GLM” / “RF”等的所有模型)?

到目前为止,我尝试了对光栅堆栈的子集进行操作:

  result <- subset(my_stack, grep("GAM"))

但这并不起作用。你能帮我解决一下吗?

1个回答

9

您好,您似乎没有正确使用 grep 命令 - 您需要告诉它在哪些名称中搜索,请看下面。此外,请确保通过指定栅格包来访问正确的函数。子集是非常通用的函数名称,如果在加载 raster 包之后添加了另一个库,它可能被覆盖或者如果您根本没有加载库,R 将默认使用 base::subset

我还喜欢在调试时使用 value = TRUE,虽然无论哪种方式都可以工作。

all_GAM <- raster::subset(my_stack, grep('_GAM', names(my_stack), value = T))

非常有用!谢谢! - geo_dd
感谢您提供如此超级有用的答案! - tnt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接