Предполагая, что входные данные воспроизводятся в примечании в конце (в следующий раз, пожалуйста, убедитесь, что ваш вопрос содержит полный воспроизводимый код, включая входные данные), мы можем внести следующие изменения:
- используйте вместо этого
paste0
из paste
- создайте переменную
locname
для хранения имени фрейма данных и переменную e
для среды, в которой находится наш фрейм данных - , используйте
e[[...]]
вместо get
и assign
- используйте magrittr
%<>%
двустороннюю трубу - возможно используйте
filter(is.finite(log.DO))
- не показано ниже
этот код:
library(dplyr)
library(magrittr)
e <- .GlobalEnv # change if our data frame is in some other environment
locname <- paste0(Location_name, "DO")
e[[locname]] %<>%
filter(log.DO != -Inf)
Результат:
get(locname, e)
## log.DO
## 1 1
## 2 2
Альтернатива
Эта альтернатива использует только обычные трубы.Мы используем e
и locname
сверху.
library(dplyr)
e[[locname]] <- e[[locname]] %>%
filter(log.DO != -Inf)
Примечание
Тестовый ввод:
ABC_DO <- data.frame(log.DO = c(1, -Inf, 2))
Location_name <- "ABC_"