本文介绍了替换列名gsub中的字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在读一堆CSV,它们的标题中包含"sales-数千"之类的内容,并以"sales ...数千"的形式出现在R中.我想使用正则表达式(或其他简单方法)来清理它们.

I am reading in a bunch of CSVs that have stuff like "sales - thousands" in the title and come into R as "sales...thousands". I'd like to use a regular expression (or other simple method) to clean these up.

我不知道为什么这不起作用:

I can't figure out why this doesn't work:

#mock data
  a <- data.frame(this.is.fine = letters[1:5],
                  this...one...isnt = LETTERS[1:5])

#column names
  colnames(a)
  # [1] "this.is.fine"  "this...one...isnt"

#function to remove multiple spaces
  colClean <- function(x){
    colnames(x) <- gsub("\\.\\.+", ".", colnames(x))
  }

#run function
  colClean(a)

#names go unaffected
  colnames(a)
  # [1] "this.is.fine"  "this...one...isnt"

但是此代码可以:

#direct change to names
  colnames(a) <- gsub("\\.\\.+", ".", colnames(a))

#new names
  colnames(a)
  # [1] "this.is.fine"  "this.one.isnt"

请注意,我可以在单词之间留一个句点.

Note that I'm fine leaving one period between words when that occurs.

谢谢.

推荐答案

Rich Scriven 有答案:

定义

colClean <- function(x){ colnames(x) <- gsub("\\.\\.+", ".", colnames(x)); x } 

然后做

a <- colClean(a) 

更新

这篇关于替换列名gsub中的字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 21:20