首页 > 解决方案 > 如何修改字符向量以便可以使用它来索引另一个对象?(栅格或数据框)

问题描述

假设我有一个栅格对象 r(或一个数据框,因为它们可以类似地被索引)和一个字符列表 v:

v <- c("X15_X14","X15_X10","X13_X10")

我的对象“r”的名称/波段是“X1”、“X2”、...、“X14”、“X15”

我可以使用 strsplit、gsub 和 paste(或任何其他函数)的什么组合来创建一个简单的数学运算,其中列表中的“X15_X14”变为 r$X15/r$X14 或 r[[15]]/r[[ 14]]?

我想使用自动生成的列表“v”来选择要执行除法的波段/列。我有许多模型,其中训练数据已经采用这种比率格式(即 X15/X14),并且像我的列表一样命名。我将模型应用到的数据名为“X14”、“X15”,需要先应用比率,然后才能应用模型。

标签: r

解决方案


我们可以使用strsplit将 at 拆分_为一个list向量,然后遍历listwith lapply,将 'r' 子集化[[并除以

lst1 <- lapply(strsplit(v, "_"), function(x) r[[x[1]]]/r[[x[2]]])

推荐阅读