我有一个dataframe,在这里我只想重命名以"Q“开头的列名为小写和删除句点。我认为用regex的gsub是合适的,但我对它缺乏经验。这就是我到目前为止所做的工作,但我现在收到了一条错误消息:
错误:无法将字符向量转换为函数
df <- data.frame(A.1 = character(),
Q1.1 = character(),
Q1.2 = character())
df <- df %>% rename_with(
gsub('Q\\d', 'q.', names(df))
)A.1将保持原样,但Q1.1将成为q11。
发布于 2022-03-13 23:49:56
rename_with可以使用select语句,因此我们可以使用starts_with将函数仅应用于以Q开头的列。
library(dplyr)
df %>%
rename_with(.fn = ~ tolower(gsub(".", "", .x, fixed = TRUE)), .col = starts_with("Q"))
#[1] A.1 q11 q12
#<0 rows> (or 0-length row.names)或使用stringr
library(stringr)
df %>%
rename_with(.fn = ~ str_to_lower(str_replace_all(.x, "\\.", "")), .col = starts_with("Q"))发布于 2022-03-13 23:54:47
下面是一个使用regex组捕获的基本R选项:
df <- data.frame(
A.1 = character(),
Q1.1 = character(),
Q1.2 = character())
df |> setNames(gsub("^Q(.*)\\.(.*)", "q\\1\\2", names(df)))
## [1] A.1 q11 q12
## <0 rows> (or 0-length row.names)https://stackoverflow.com/questions/71461670
复制相似问题