在 dplyr 1.0 中重命名 tidyeval 中的列
Renaming column in tidyeval in dplyr 1.0
我希望在 tidy evaluation 中根据接收变量生成新列。例如,
library(dplyr)
some_custom_measure <- function(.data, cola, colb) {
.data %>% mutate("{{ cola }}_x_{{ colb }}" := {{ cola }} * {{ colb }})
}
iris %>%
some_custom_measure(Sepal.Length, Sepal.Width) %>%
head()
新列将被命名为 Sepal.Length_x_Sepal.Width
。
在自定义函数中形成新名称时如何将变量作为字符串操作?我希望完成类似 sepal_length_x_sepal_width
的事情
您可以使用deparse(substitute(...))
将每个变量名捕获为字符串并将其存储到变量中。
然后您可以按照自己喜欢的方式处理该变量来处理字符串。当你开始使用它时,将变量放在你的列名规范中的单个大括号内。
library(dplyr)
some_custom_measure <- function(.data, cola, colb) {
cola_name <- tolower(gsub("\.", "_", deparse(substitute(cola))))
colb_name <- tolower(gsub("\.", "_", deparse(substitute(colb))))
.data %>% mutate("{cola_name}_x_{colb_name}" := {{ cola }} * {{ colb }})
}
iris %>%
some_custom_measure(Sepal.Length, Sepal.Width) %>%
head()
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5.0 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> sepal_length_x_sepal_width
#> 1 17.85
#> 2 14.70
#> 3 15.04
#> 4 14.26
#> 5 18.00
#> 6 21.06
我希望在 tidy evaluation 中根据接收变量生成新列。例如,
library(dplyr)
some_custom_measure <- function(.data, cola, colb) {
.data %>% mutate("{{ cola }}_x_{{ colb }}" := {{ cola }} * {{ colb }})
}
iris %>%
some_custom_measure(Sepal.Length, Sepal.Width) %>%
head()
新列将被命名为 Sepal.Length_x_Sepal.Width
。
在自定义函数中形成新名称时如何将变量作为字符串操作?我希望完成类似 sepal_length_x_sepal_width
您可以使用deparse(substitute(...))
将每个变量名捕获为字符串并将其存储到变量中。
然后您可以按照自己喜欢的方式处理该变量来处理字符串。当你开始使用它时,将变量放在你的列名规范中的单个大括号内。
library(dplyr)
some_custom_measure <- function(.data, cola, colb) {
cola_name <- tolower(gsub("\.", "_", deparse(substitute(cola))))
colb_name <- tolower(gsub("\.", "_", deparse(substitute(colb))))
.data %>% mutate("{cola_name}_x_{colb_name}" := {{ cola }} * {{ colb }})
}
iris %>%
some_custom_measure(Sepal.Length, Sepal.Width) %>%
head()
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5.0 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> sepal_length_x_sepal_width
#> 1 17.85
#> 2 14.70
#> 3 15.04
#> 4 14.26
#> 5 18.00
#> 6 21.06