gpt4 book ai didi

r - 在函数中将字符串作为参数传递时如何保留列名

转载 作者:行者123 更新时间:2023-12-04 09:56:47 25 4
gpt4 key购买 nike

我有一个将列名作为输入的函数:

library(tidyverse)

dat <- diamonds

ex_func <- function(df, grp) {
df %>%
distinct(cut, get(grp))
}

ex_func(dat, grp = "color")

我究竟如何将结果组中的第二列的名称作为输入(例如“颜色”,而不是 get(grp))?

最佳答案

如果我们同时使用不带引号或带引号的值,则使用 ensym并评估 ( !! )

library(dplyr)
ex_func <- function(df, grp) {
df %>%
distinct(cut, !! rlang::ensym(grp))
}

-测试
ex_func(dat, "color")
# A tibble: 35 x 2
# cut color
# <ord> <ord>
# 1 Ideal E
# 2 Premium E
# 3 Good E
# 4 Premium I
# 5 Good J
# 6 Very Good J
# 7 Very Good I
# 8 Very Good H
# 9 Fair E
#10 Ideal J
# … with 25 more rows

ex_func(dat, color)
# A tibble: 35 x 2
# cut color
# <ord> <ord>
# 1 Ideal E
# 2 Premium E
# 3 Good E
# 4 Premium I
# 5 Good J
# 6 Very Good J
# 7 Very Good I
# 8 Very Good H
# 9 Fair E
#10 Ideal J
# … with 25 more rows

如果我们更喜欢只使用不带引号的,选项是 {{}}
ex_func <- function(df, grp) {
df %>%
distinct(cut, {{grp}})
}

关于r - 在函数中将字符串作为参数传递时如何保留列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61899359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com