我想使用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。'
答案 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