【发布时间】:2016-01-14 15:40:59
【问题描述】:
我正在为 dplyr 中 mutate_each_ 的 SE 实现绞尽脑汁。我想要做的是从 DF 中的每一列中减去 DF 中一列中的值。
这是我希望使用 iris 数据集完成的最小工作示例(我删除了“物种”列,使其全部为数字)。我从每一列中减去 Petal.Width 列。但是我需要列名是一个变量,比如“My.Petal.Width”
# Remove Species column, so that we have only numeric data
iris_numeric <- iris %>% select(-Species)
# This is the desired result, using NSE
result_NSE <- iris_numeric %>% mutate_each(funs(. - `Petal.Width`))
# This is my attempt at using SE
SubtractCol <- "Petal.Width"
result_SE <- iris_numeric %>% mutate_each_(funs(. - as.name(SubtractCol)))
# Second attempt
SubtractCol <- "Petal.Width"
Columns <- colnames(iris_numeric)
mutate_call = lazyeval::interp(~.-a, a = as.name(SubtractCol))
result_SE <- iris_numeric %>% mutate_each_(.dots = setNames(list(mutate_call), Columns))
我收到各种错误:
Error in colwise_(tbl, funs_(funs), vars) :
argument "vars" is missing, with no default
Error in mutate_each_(., .dots = setNames(list(mutate_call), Columns)) :
unused argument (.dots = setNames(list(mutate_call), Columns))
请提前提供帮助,非常感谢。
【问题讨论】: