根据栅格图层名称上的特定模式从栅格堆栈中选择栅格图层

Tat*_*tus 3 stack r r-raster

我在 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"                 
Run Code Online (Sandbox Code Playgroud)

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

到现在为止,我一直试图做这样的光栅堆栈的子集:

  result <- subset(my_stack, grep("GAM"))
Run Code Online (Sandbox Code Playgroud)

但不会工作。你能帮我解决这个问题吗?

obr*_*oil 6

您似乎没有grep正确完成- 您必须告诉它搜索名称,见下文。还要确保通过指定栅格包来访问正确的函数。Subset 是一个非常通用的函数名称,它可能已被您在光栅之后添加的另一个库所取代 - 或者base::subset如果您根本没有加载该库,R 将默认使用。

我也更喜欢value = TRUE用于调试,尽管它可以工作。

all_GAM <- raster::subset(my_stack, grep('_GAM', names(my_stack), value = T))
Run Code Online (Sandbox Code Playgroud)