即使替换字符串相同,如何插入串行通配符



我正在尝试使用序列变量[VAR1], [VAR2], etc

重复的数字

我的尝试是以下。

equation = "((csv$Rrs550/csv$Rrs550)^-6.600000/(csv$Rrs670/csv$Rrs717)^-10.000000)^-10.000000*(csv$Rrs631/csv$Rrs550)^-10.000000/(csv$Rrs704/csv$Rrs631)^-10.000000"
mgsub::mgsub(equation,
  c("-6.600000", "-10.000000", "-10.000000", "-10.000000", "-10.000000"),
  sprintf("[VAR%d]", 1:5)
)

输出:

((csv$Rrs550/csv$Rrs550)^[VAR1]/(csv$Rrs670/csv$Rrs717)^[VAR2])^[VAR2]*(csv$Rrs631/csv$Rrs550)^[VAR2]/(csv$Rrs704/csv$Rrs631)^[VAR2]

所需的输出:

((csv$Rrs550/csv$Rrs550)^[VAR1]/(csv$Rrs670/csv$Rrs717)^[VAR2])^[VAR3]*(csv$Rrs631/csv$Rrs550)^[VAR4]/(csv$Rrs704/csv$Rrs631)^[VAR5]

这是用任何一个上的增量值替换为数字向量的VAR。

尝试以下:

from <- c("-6.600000", "-10.000000", "-10.000000", "-10.000000", "-10.000000")
to <- sprintf("[VAR%d]", 1:5)
for(i in seq_along(from)) equation <- sub(from[i], to[i], equation, fixed = TRUE)
equation

给予

[1] "((csv$Rrs550/csv$Rrs550)^[VAR1]/(csv$Rrs670/csv$Rrs717)^[VAR2])^[VAR3]*(csv$Rrs631/csv$Rrs550)^[VAR4]/(csv$Rrs704/csv$Rrs631)^[VAR5]"

最新更新