我有以下数据:
library(dplyr)
df <- data.frame(gh225 = "foo1", gh765 = "foo2", gauskper = "foo3") %>%
rename_all(funs(stringr::str_replace_all(., "gh", "v")))我想使用rename_all与if_else相结合,但是我找不到方法,逻辑应该是这样的(但是使用变量):
if_else(stringr::str_detect(columns, "au"), "id_per", columns)话说回来,我想把这个名字改成id_per。
发布于 2021-08-21 18:26:24
我们可以使用rename_with,因为不推荐使用rename_all。
library(dplyr)
library(stringr)
data.frame(gh225 = "foo1", gh765 = "foo2", gauskper = "foo3") %>%
rename_with(~ str_replace(., "au", "idper"), contains("au"))关于if_else的使用,它只需要一个lambda表达式,即~
data.frame(gh225 = "foo1", gh765 = "foo2", gauskper = "foo3") %>%
rename_with(~ if_else(str_detect(., "au"), "id_per", .), everything())
gh225 gh765 id_per
1 foo1 foo2 foo3发布于 2021-08-21 18:25:44
您可以在一个函数中组合这些条件。
df %>%
rename_all(
.funs = function(x){
x %>%
stringr::str_replace_all(., "gh", "v") %>%
stringr::str_replace_all(., "gauskper", "id_per")
}
)发布于 2021-08-21 18:43:23
这个问题已经由阿克兰回答了,而且是最好的,但当我正确地理解你时:
“话说回来,我想把这个名字改名为id_per。”
然后
实现这一目标的最佳途径是:
library(dplyr)
df %>%
rename(id_per = gauskper) gh225 gh765 id_per
1 foo1 foo2 foo3https://stackoverflow.com/questions/68875447
复制相似问题