【问题标题】:Select raster layers from raster stack based on certain pattern on raster layer's name根据栅格图层名称上的特定模式从栅格堆栈中选择栅格图层
【发布时间】:2017-10-01 22:40:49
【问题描述】:

我在 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"))

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

【问题讨论】:

    标签: r stack r-raster


    【解决方案1】:

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

    我也更喜欢使用value = TRUE 进行调试,尽管它可以以任何方式工作。

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

    【讨论】:

    • 非常有用!谢谢!
    • 感谢这个超级有用的答案!
    猜你喜欢
    • 2014-11-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多