dplyr NSE: центрирование нескольких столбцов в кадре данных - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь «центрировать» несколько столбцов в кадре данных с помощью dplyr, но продолжаю получать ошибку оценки «не числовой аргумент для двоичного оператора». Я думаю, это потому, что я пытаюсь передать строку, когда моя функция ожидает пустое имя переменной. Однако использование функции syms () не помогает.

center <- function(var) {
  var <- enquo(var)
  var_ctrd <- paste0(quo_name(var), "_ctrd")
  dataset <- dataset %>% 
    group_by(Gender) %>% 
    mutate(!! var_ctrd := !! var - mean(!! var, na.rm = TRUE))
}

# Pull out character vector of modifier names
mod_names <- dataset %>% 
  select(NeckLengthCm:FlexExtDiff_Peak_abs) %>% 
  colnames()

# Iterate over modifiers
walk(syms(mod_names), center)

Кто-нибудь знает, как решить эту проблему или есть лучшее решение?

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете использовать mutate_at() для центрирования подмножества переменных, используя вектор имен переменных

# Only center a subset
vars <- colnames(mtcars)[1:4]

mtcars %>% 
  mutate_at(vars, scale, scale = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...