от
Я пытаюсь сослаться на существующие столбцы в dplyr через цикл. По сути, я хотел бы оценить операции из одной таблицы (оценка в примере ниже) для выполнения в другую таблицу (dt в примере ниже). Я не хочу жестко кодировать имена столбцов в RHS в mutate (). Я хотел бы контролировать оценки, проводимые из таблицы оценки ниже. Поэтому я пытаюсь сделать процесс динамичным. Вот пример кадра данных:
`dt = data.frame(
    A = c(1:20), 
    B = c(11:30), 
    C = c(21:40),
    AA = rep(1, 20), 
    BB = rep(2, 20)
)`
Вот таблица примеров операций, которые нужно выполнить:
`evaluation = data.frame(
   New_Var = c("AA", "BB"), 
   Operation = c("(A*2) > B", "(B*2) <= C"), 
   Result = c("True", "False")
) %>% mutate_all(as.character)`
Я пытаюсь сделать следующее:
`for (i in 1:nrow(evaluation)) {

  var = evaluation$New_Var[i]

  dt = dt %>% 
    rowwise() %>% 
    mutate(!!var := ifelse(eval(parse(text = evaluation$Operation[i])), 
                           evaluation$Result[i], 
                           !!var))

}`
мой желаемый результат будет примерно таким, за исключением того, что «AA» в столбце AA будет исходными числовыми значениями, равными 1. Какой здесь правильный синтаксис? Я знаю, что есть другие способы сделать это с помощью базы R, но я бы предпочел сделать это через dplyr, так как это более чистый код. Я использую "rowise ()", чтобы сделать это элемент за элементом.              

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

...