gpt4 book ai didi

r - 使用 dplyr rename_* 有条件地重命名变量

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

假设我想通过在所有以数字开头的变量名称前添加前缀来有条件地重命名变量。当我尝试使用 rename_* 函数这样做时,我遇到了错误。

library(dplyr)
library(stringr)

ds <-
tibble(
`4 grade` = c(1,2,3),
`6 grade` = c(1,2,3),
`G8 grade` = c(1,2,3),
)

ds

# my function works with rename_all
ds %>% rename_all( ~ paste0("G", .) )

# but when I try to apply my function conditionally I get an error
ds %>% rename_at( vars(starts_with("[[:digit:]]")), ~paste0("G", .) )
ds %>% rename_at( vars(str_detect("^[[:digit:]]")), ~paste0("G", .) )
ds %>% rename_if( str_detect("^[[:digit:]]"), ~paste0("G", .) )

我如何使用带 rename_* 的条件逻辑来指定要重命名的变量?

最佳答案

有一个名为 matchestidyselect 辅助函数,可以对变量名称进行正则表达式搜索。请注意 starts_with 不起作用,因为它只接受字符串文字:

library(dplyr)

ds %>%
rename_at(vars(matches("^[0-9]")), ~ paste0("G", .))

输出:

# A tibble: 3 x 3
`G4 grade` `G6 grade` `G8 grade`
<dbl> <dbl> <dbl>
1 1 1 1
2 2 2 2
3 3 3 3

关于r - 使用 dplyr rename_* 有条件地重命名变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57081043/

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