私は、タイトルに「販売-数千」のようなものがあり、「販売-数千」としてRに入ってくるCSVの束を読んでいます。これらをクリーンアップするために、正規表現(または他の単純な方法)を使用したいと思います。
これがなぜ機能しないのかわかりません:
#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"
単語の間にピリオドを1つ残して問題ないことに注意してください。
ありがとうございました。
Rich Scriven 答えがありました:
定義する
colClean <- function(x){ colnames(x) <- gsub("\\.\\.+", ".", colnames(x)); x }
してから
a <- colClean(a)
更新する
names(a) <- gsub(x = names(a), pattern = "\\.", replacement = "#")
gsub
関数を使用して、.
を#
などの別の特殊文字に置き換えることができます。