[英]dplyr mutate, custom function and variable name as characters
我仍然不完全清楚如何將某些表達式傳遞給dplyr。
我想在mutate中使用用戶定義的函數,並能夠將列名稱作為字符傳遞。 我用interp {lazyeval}嘗試了一些沒有成功的東西。
請參閱下面的虛擬示例。
library(dplyr)
library(lazyeval)
# Define custom function
sumVar <- function(x, y) { x + y }
# Using bare column names (OK)
iris %>%
mutate(newVar = sumVar(Petal.Length, Petal.Width))
# Using characters for column names (does not work)
iris %>%
mutate_(newVar = sumVar('Petal.Length', 'Petal.Width'))
我們可以嘗試
library(lazyeval)
library(dplyr)
res1 <- iris %>%
mutate_(newVar= interp(~sumVar(x, y),
x= as.name("Petal.Length"),
y = as.name("Petal.Width")) )
OP的方法
res2 <- iris %>%
mutate(newVar = sumVar(Petal.Length, Petal.Width))
identical(res1, res2)
#[1] TRUE
在dplyr
的devel版本中(很快將在2017年4月發布0.6.0
),這也可以是quosure
varNames <- quos(Petal.Length, Petal.Width)
res3 <- iris %>%
mutate(newVar = sumVar(!!! varNames))
quos
正在引用並在mutate
,我們使用!!!
unquote
評估list
identical(res2, res3)
#[1] TRUE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.