首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重命名以前缀开头的列,并使用gsub删除句点?

重命名以前缀开头的列,并使用gsub删除句点?
EN

Stack Overflow用户
提问于 2022-03-13 23:31:07
回答 2查看 184关注 0票数 0

我有一个dataframe,在这里我只想重命名以"Q“开头的列名为小写和删除句点。我认为用regex的gsub是合适的,但我对它缺乏经验。这就是我到目前为止所做的工作,但我现在收到了一条错误消息:

错误:无法将字符向量转换为函数

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-13 23:49:56

rename_with可以使用select语句,因此我们可以使用starts_with将函数仅应用于以Q开头的列。

代码语言:javascript
复制
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

代码语言:javascript
复制
library(stringr)

df %>%
  rename_with(.fn = ~ str_to_lower(str_replace_all(.x, "\\.", "")), .col = starts_with("Q"))
票数 1
EN

Stack Overflow用户

发布于 2022-03-13 23:54:47

下面是一个使用regex组捕获的基本R选项:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71461670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档