我有一个带有以下列标题的数据框:
x_y_z、a_b_c、a_b_d、a_b_e、a_b_f 等
我想从以 a_b_ 开头的列名称中删除 a_b_ 部分,以便只保留最后一个字符。
如何才能做到这一点,而不必单独重命名每个列名称?
我尝试将 rename_with() 函数与 substr() 和starts_with() 函数一起使用,但我无法让代码工作:
rename_with(df, substr(df, 5,5),starts_with(a_b_))
我尝试截断以 a_b_ 开头的列名,但它不起作用。
我使用“R for Data Science”一书来获取这方面的帮助。
dplyr::rename_with()
将函数作为第二个参数。您可以使用 function(x) ...
或匿名函数简写 \(x) ...
来定义函数。
tidyselect::starts_with()
将一个字符作为其参数。将 a_b_
括在引号中以创建字符。
library(tidyverse)
df <- tibble(
x_y_z = 1:3,
a_b_c = 1:3,
a_b_d = 1:3
)
rename_with(df, \(x) substr(x, 5,5), starts_with("a_b_"))
#> # A tibble: 3 × 3
#> x_y_z c d
#> <int> <int> <int>
#> 1 1 1 1
#> 2 2 2 2
#> 3 3 3 3