R 替换列名称gsub中的字符
我正在读一堆CSV,它们的标题中有“sales-数千”之类的内容,进入R后称为“sales…数千”。我想使用正则表达式(或其他简单的方法)来清理这些 我不明白为什么这不起作用:R 替换列名称gsub中的字符,r,gsub,R,Gsub,我正在读一堆CSV,它们的标题中有“sales-数千”之类的内容,进入R后称为“sales…数千”。我想使用正则表达式(或其他简单的方法)来清理这些 我不明白为什么这不起作用: #mock data a <- data.frame(this.is.fine = letters[1:5], this...one...isnt = LETTERS[1:5]) #column names colnames(a) # [1] "this.is.fi
#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"
模拟数据
a的答案是:
定义
colClean <- function(x){ colnames(x) <- gsub("\\.\\.+", ".", colnames(x)); x }
colCleannames(a)替换发生在本地,函数内部,而不是全局。如果您在函数的最后一行返回(x)
,您将获得更新的数据框。感谢您的快速响应!你能按需要写的那样把函数打出来吗?我尝试将return(x)
放入代码中,但没有得到预期的结果。我可以让它打印列名或打印具有新列名的数据框,但这两次尝试都没有实际更改全局环境中的数据框。您还需要使用更新的数据框覆盖现有数据框,或将其指定给新变量。即使您执行了return(x)
,函数本身也不会更改原始数据帧。定义colClean d'oh,分配的最后一步!显然,这是漫长一周的结果。谢谢你的帮助。我必须用“colnames”重新拼合“names”,或者使用“fixed=T”不重新拼合整个列名。
colClean <- function(x){ colnames(x) <- gsub("\\.\\.+", ".", colnames(x)); x }
a <- colClean(a)
names(a) <- gsub(x = names(a), pattern = "\\.", replacement = "#")