我正在尝试使用序列变量[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]"