Как вставить серийный символ подстановки, даже если строка замены такая же? - PullRequest
1 голос
/ 09 марта 2019

Я пытаюсь ввести цифры, которые могут повторяться с последовательной переменной [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 вектором числа на значения приращения на любом из них,

1 Ответ

2 голосов
/ 09 марта 2019

Попробуйте это:

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]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...