替换列名 gsub 中的字符
Replace characters in column names gsub
我正在阅读一堆标题中包含 "sales - thousands" 之类内容的 CSV,并以 "sales...thousands" 的形式进入 R。我想使用正则表达式(或其他简单方法)来清理它们。
我不明白为什么这不起作用:
#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"
请注意,发生这种情况时,我可以在单词之间留一个句点。
谢谢。
Rich Scriven 有答案:
定义
colClean <- function(x){ colnames(x) <- gsub("\.\.+", ".", colnames(x)); x }
然后
a <- colClean(a)
更新一个
names(a) <- gsub(x = names(a), pattern = "\.", replacement = "#")
您可以使用 gsub
函数将 .
替换为另一个特殊字符,例如 #
。
我正在阅读一堆标题中包含 "sales - thousands" 之类内容的 CSV,并以 "sales...thousands" 的形式进入 R。我想使用正则表达式(或其他简单方法)来清理它们。
我不明白为什么这不起作用:
#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"
请注意,发生这种情况时,我可以在单词之间留一个句点。
谢谢。
Rich Scriven 有答案:
定义
colClean <- function(x){ colnames(x) <- gsub("\.\.+", ".", colnames(x)); x }
然后
a <- colClean(a)
更新一个
names(a) <- gsub(x = names(a), pattern = "\.", replacement = "#")
您可以使用 gsub
函数将 .
替换为另一个特殊字符,例如 #
。