如何使用R中的算术表达式对数据集进行变异

时间:2018-09-02 15:46:27

标签: r dplyr

我想使用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 :(得分:0)

在输入函数参数时不要使用<-。在dplyr中,mutate是一项功能,可让您基于任何计算来创建新列。这是一个示例:

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

这里不需要sym。 希望这就是您想要的。

答案 1 :(得分:0)

这是dplyr的非标准评估问题。

首先报价,然后取消报价。

newCol <- quo(gear + wt)

dplyr::mutate(mtcars, !! newCol)

这对这里很有帮助:https://dplyr.tidyverse.org/articles/programming.html

值得一读,很棒:)

答案 2 :(得分:0)

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