【发布时间】:2018-10-16 19:38:28
【问题描述】:
我想创建一个在mutate 内部工作的函数。作为一个简单的例子,我可以让它工作:
library(tidyverse)
# Toy Data
df <- tibble::tribble(
~id, ~first_name, ~gender, ~height,
1, "john", "m", 71,
2, "jane", "f", 64,
3, "sally", "f", 65
)
double_it <- function(df, x) {
x <- enquo(x)
pull(df, !!x) * 2
}
df %>% mutate(height_2 = double_it(., height))
# A tibble: 3 x 5
id first_name gender height height_2
<dbl> <chr> <chr> <dbl> <dbl>
1 1 john m 71 142
2 2 jane f 64 128
3 3 sally f 65 130
但是,我想要的是:
double_it <- function(x) {
???
}
df1 %>% mutate(height_2 = double_it(height))
# A tibble: 3 x 5
id first_name gender height height_2
<dbl> <chr> <chr> <dbl> <dbl>
1 1 john m 71 142
2 2 jane f 64 128
3 3 sally f 65 130
【问题讨论】:
-
所以你只想要
double_it <- function(x) {x*2}?dplyr可以使用mutate()中的任何简单函数。 -
这是一个不好的例子来证明我的问题。我要再试一次。
-
看来只需要写一个普通的函数?
-
谢谢,@lionel。你说的对。我尝试创建一个简单的示例,该示例与我尝试解决的问题相同。但是,我最终把它弄得太简单了。有时间我会发布一个更好的例子。