作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我想通过在所有以数字开头的变量名称前添加前缀来有条件地重命名变量。当我尝试使用 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_* 的条件逻辑来指定要重命名的变量?
最佳答案
有一个名为 matches
的 tidyselect
辅助函数,可以对变量名称进行正则表达式搜索。请注意 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/
rename_ 对于非病理列名称按预期工作 %>% rename_(foo = 'testcol') 但是如果我想重命名包含空格的列怎么办? %>% rename_(foo = 'test col')
假设我想通过在所有以数字开头的变量名称前添加前缀来有条件地重命名变量。当我尝试使用 rename_* 函数这样做时,我遇到了错误。 library(dplyr) library(stringr) ds
我是一名优秀的程序员,十分优秀!