Как изменить набор данных, используя арифметическое выражение в R - PullRequest
0 голосов
/ 02 сентября 2018

Я хочу динамически мутировать набор данных, используя арифметическое выражение в R. Я попытался следовать безуспешно. Ценить помощь.

newCol <- 'newCol=gear+wt'

mutate(mtcars,!!newCol) ## This inserted a column newCol=gear+wt

mutate(mtcars,!!sym(newCol)) ## THis gives an error 

'Ошибка в mutate_impl (.data, точки): привязка не найдена: newCol = gear + wt.'

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Это проблема нестандартной оценки dplyr.

Сначала процитируй свое выражение, а затем и кавычки.

newCol <- quo(gear + wt)

dplyr::mutate(mtcars, !! newCol)

Это очень полезно здесь: https://dplyr.tidyverse.org/articles/programming.html

Стоит прочесть, это здорово :) 1009 *

0 голосов
/ 04 сентября 2018
library(dplyr)

newCol <- eval(parse(text='gear+wt'),list2env(mtcars))

mutate(mtcars, newCol = newCol)

Или используйте базу R вместо mutate:

mtcars$newCol <- eval(parse(text='gear+wt'),list2env(mtcars))
mtcars
0 голосов
/ 02 сентября 2018

Вы не используете <- при вводе аргумента функции. в <code>dplyr mutate - это функция, которая позволяет создавать новые столбцы на основе любых вычислений. Вот пример:

library(dplyr)
dataset <- mtcars
dataset %>% mutate(newCol = gear+wt) 

Нет необходимости для sym здесь. Надеюсь, это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...