重命名 R 中包含正则表达式的多个列

问题描述 投票:0回答:1

我有一个带有以下列标题的数据框:

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”一书来获取这方面的帮助。

r rename
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.