gsub没有在colnames上工作?

时间:2017-04-13 22:18:48

标签: r regex gsub

我有一个名为df的数据框,其列名称采用以下格式:

  "A Agarwal"                   "A Agrawal"                   "A Balachandran"        
"A.Brush"                     "A.Casavant"                  "A.Chakrabarti"           

他们是名字的第一个名字。但是,其中一些是用空格分隔的,而另一些则是一个句号。我需要用句点替换句点。(第一列称为author.ID,我将其从以下代码中排除)

我尝试了以下代码,但结果的代码名称仍未改变。

  colnames(df[, -1]) = gsub("\\s", "\\.", colnames(df[, -1]))
  colnames(df[, -1]) = gsub(" ", ".", colnames(df[, -1]))

我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:1)

请注意,df[, -1]会获取除第一列以外的所有行和列(请参阅this reference)。要修改列名称,您应该使用colnames(df)

要用点替换第一个文字空间,请使用

colnames(df) <- sub(" ", ".", colnames(df), fixed=TRUE)

如果可以有多个空格,请使用正则表达式:

colnames(df) <- sub("\\s+", ".", colnames(df))

如果您需要删除列名称中包含单个点的所有空格序列,请使用gsub

colnames(df) <- gsub("\\s+", ".", colnames(df))