gpt4 book ai didi

使用 `starts_with()` 重命名列,其中新前缀是一个字符串

转载 作者:行者123 更新时间:2023-12-04 14:39:24 25 4
gpt4 key购买 nike

在 R 中,我想重命名函数内以某个前缀开头的所有列(比如 "oldprefix1", "oldprefix2", "oldprefix3", ..."newprefix1", "newprefix2", "newprefix3", ... )。以下代码有效:

change = function(df) {
select(df, newprefix = starts_with('oldprefix') )
}
change(test)

但是,我想将带有新前缀的字符串作为参数传递给函数:
change2 = function(df, prefix) {
dots = paste0(prefix," = starts_with('oldprefix')"
select_(df, dots)
}
change2(test, "newprefix")

我试过使用 select_().dots ,但我无法让它与 starts_with() 一起工作功能。我收到错误 Error in eval(expr, envir, enclos) :
could not find function "starts_with"
.

最佳答案

选项是使用 rename_at

mtcars %>% 
rename_at(vars(starts_with('m')), funs(paste0('prefix', .)))

要更改旧名称,请使用 sub
change2 <- function(df, oldpref, newpref) {
df %>%
rename_at(vars(starts_with(oldpref)), funs(sub(oldpref, newpref, .)))


}

change2(mtcars, "m", "newprefix") %>%
names
#[1] "newprefixpg" "cyl" "disp" "hp" "drat"
#[6] "wt" "qsec" "vs" "am" "gear"
#[11] "carb"

关于使用 `starts_with()` 重命名列,其中新前缀是一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46585296/

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