Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从列变量中删除前缀字母_R_Dplyr - Fatal编程技术网

R 从列变量中删除前缀字母

R 从列变量中删除前缀字母,r,dplyr,R,Dplyr,我有所有以“m”开头的列名。例子:明康,法师。我想删除前缀。到目前为止,我已经尝试了以下方法: df %>% rename_all(~stringr::str_replace_all(.,"m","")) 这将删除所有包含字母“m”的列名。我只需要从一开始就把它拆下来。有什么建议吗?我们需要指定位置。^与字符串的开头或此处的列名匹配。因此,如果我们使用^m,它将只在字符串的开头或开头匹配'm',而不会在其他地方匹配 library(dplyr)

我有所有以“m”开头的列名。例子:明康,法师。我想删除前缀。到目前为止,我已经尝试了以下方法:

df %>% 
rename_all(~stringr::str_replace_all(.,"m",""))

这将删除所有包含字母“m”的列名。我只需要从一开始就把它拆下来。有什么建议吗?

我们需要指定位置。^与字符串的开头或此处的列名匹配。因此,如果我们使用^m,它将只在字符串的开头或开头匹配'm',而不会在其他地方匹配

library(dplyr)
library(stringr)
df %>% 
      rename_all(~stringr::str_replace(.,"^m",""))
#   ba Mbgeg gmba cfor
#1  1     2    4    6
#2  2     3    5    7
#3  3     4    6    8
此外,如果应该忽略大小写,请使用regex换行并指定ignore_case=TRUE

另一个选项是word boundary\\bm,但这可能与有多个单词列名的单词开头相匹配

注意:str_replace_all用于替换多次出现的模式。在这里,我们只需要替换第一个实例,对于这个str_替换就足够了

数据
我们需要指定位置。^与字符串的开头或此处的列名匹配。因此,如果我们使用^m,它将只在字符串的开头或开头匹配'm',而不会在其他地方匹配

library(dplyr)
library(stringr)
df %>% 
      rename_all(~stringr::str_replace(.,"^m",""))
#   ba Mbgeg gmba cfor
#1  1     2    4    6
#2  2     3    5    7
#3  3     4    6    8
此外,如果应该忽略大小写,请使用regex换行并指定ignore_case=TRUE

另一个选项是word boundary\\bm,但这可能与有多个单词列名的单词开头相匹配

注意:str_replace_all用于替换多次出现的模式。在这里,我们只需要替换第一个实例,对于这个str_替换就足够了

数据
另一种方法你可以试试

library(tidyverse)
df <- data.frame(mma = 1:2, mbapbe = 1:2)
df2 <- df %>% 
  rename_at(vars(c("mma", "mbapbe")) ,function(x) gsub("^m", "", x))
#   ma bapbe
# 1  1     1
# 2  2     2 

另一种方法你可以试试

library(tidyverse)
df <- data.frame(mma = 1:2, mbapbe = 1:2)
df2 <- df %>% 
  rename_at(vars(c("mma", "mbapbe")) ,function(x) gsub("^m", "", x))
#   ma bapbe
# 1  1     1
# 2  2     2 
可以使用底端R中的sub来删除列名开头的m

names(df) <- sub('^m', '', names(df))
可以使用底端R中的sub来删除列名开头的m

names(df) <- sub('^m', '', names(df))

谢谢这很有效。我想如果你想替换所有的列名,就应该替换所有的列名。谢谢你澄清这一点。我看到rename\u all已经做到了这一点。@AmoghJoshi rename\u all暗示=>重命名所有列。str_replace_all=>用替换值替换字符串中模式的每个实例谢谢!这很有效。我想如果你想替换所有的列名,就应该替换所有的列名。谢谢你澄清这一点。我看到rename\u all已经做到了这一点。@AmoghJoshi rename\u all暗示=>重命名所有列。str_replace_all=>用替换值替换字符串中模式的每个实例