gpt4 book ai didi

r - tidyr 稍后在函数中使用胶水字符串

转载 作者:行者123 更新时间:2023-12-04 01:04:18 29 4
gpt4 key购买 nike

Tidy eval now supports glue strings
所以这很好用:

my_summarise5 <- function(data, mean_var ) {
data %>%
mutate(
"mean_{{mean_var}}" := mean({{ mean_var }}),
)
}

mtcars %>% my_summarise5(cyl)
但是之后
my_summarise5 <- function(data, mean_var ) {
data %>%
mutate(
"mean_{{mean_var}}" := mean({{ mean_var }}),
"mean_{{mean_var}}_plusone" := "mean_{{mean_var}}"+1
)
}

mtcars %>% my_summarise5(cyl)

throw
Error: Problem with `mutate()` input `mean_cyl_plusone`.
x non-numeric argument to binary
"mean_{{mean_var}}_plusone" := "mean_{{mean_var}}"+1 中会出现一些“粘贴”或“胶水”的东西吗?部分解决这个问题?
请注意,这显然不是一个有用的案例,它是语法的 MWE。我实际上想定义两个具有不同名称的新列,一个使用另一个...否则我必须重复并且它也会变得困惑。

最佳答案

跨使用:

my_summarise5 <- function(data, mean_var ) {
data %>%
mutate(
"mean_{{mean_var}}" := mean({{ mean_var }}),
across(last_col(), ~.+1, .names = "{col}_plusone")
)
}

mtcars %>% my_summarise5(cyl) %>% head
给予:
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb mean_cyl mean_cyl_plusone
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 6.1875 7.1875
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 6.1875 7.1875
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 6.1875 7.1875
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 6.1875 7.1875
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 6.1875 7.1875
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 6.1875 7.1875

关于r - tidyr 稍后在函数中使用胶水字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67006740/

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