2017-08-30 2 views
0

Rで無効な列名を識別する方法はありますか?おそらく正規表現や別のテクニックを使っています。R:無効な列名を持つ列を特定して削除する

私はDocumentTermMatrix(DTM)をテキスト列から生成し、このDTMをデータフレームに変換します。私は無効な名前の列に終わる。例えば

"ノード" "CLASS" "️️️️" "️️️" "デ" "デ" "JE devais" "夜" "her目" "公認会計士chaud"「青々 cosmétiques」 "IVE見る" makeClassifTaskで私はMLRする:: makeClassificationTaskをこのデータセットを渡すとき、私は次のエラーメッセージが表示されます

エラー(データ= DAT、ターゲット= "CLASS" ): 'data'のアサーションに失敗しました:列にはRの変数命名規則に従って命名する必要があります。

したがって、無効な名前を持つすべての列を特定して削除したいと考えています。再現性の例えば

invalidColumnNames <- identify indexes of columns with invalid names 
dat <- dat[,-invalidColumnNames] 

データのようなもの:

cols <- c("node", "CLASS", "️️️️", "️️️", " de", " des", 
" kmh", " points", " zéro", "\u2615️\u2615️", "\u2615️", 
"\u2693️\u2693️", "\u26f5️\u2693️", "\u2728\u2728\u2728\u2728\u2728", 
"aaliassime", "aaron", "abaixoassinado", "abandono", "abat", 
"abattu", "abiertamente", "abierto", "abit", "able", "abomination", 
"abonnements", "abonnés", "abonnez", "abraham", "absolutely", 
"abstract", "abused", "acaba", "acabar", "acabo", "acadiebathurst", 
"acaï", "acc", "accept", "accèsloisirs", "access", "accessible", 
"accessories", "accident", "accidentally", "acción", "acciones", 
"accommodationsreligious", "accompli", "accomplie", "accomplir", 
"accorde", "accordent", "account", "accounts", "accro", "accueil", 
"accueille", "accueillir", "accurate", "accusé", "accusent", 
"acérées", "acériculteur", "acha", "achat", "achei", "acheté", 
"acheter", "acho", "acidités", "acknowledge", "acontecem", "acordei", 
"acquis", "across", "action", "activité", "activités", "actresses", 
"actualité", "actuel", "adam", "adaptation", "adapter", "added", 
"addicive", "addicted", "addition", "additives", "addressed", 
"adds", "adeus", "adjoint", "adjointeadministrative", "adjust", 
"administratives", "adopción", "adopté", "adorable") 

望ましい結果:すべてのヘルプは大歓迎です

"node", "CLASS", " de", " des", 
" kmh", " points", " zéro", "aaliassime", "aaron", 
"abaixoassinado", "abandono", "abat", 
"abattu", "abiertamente", "abierto", "abit", "able", "abomination", 
"abonnements", "abonnés", "abonnez", "abraham", "absolutely", 
"abstract", "abused", "acaba", "acabar", "acabo", "acadiebathurst", 
"acaï", "acc", "accept", "accèsloisirs", "access", "accessible", 
"accessories", "accident", "accidentally", "acción", "acciones", 
"accommodationsreligious", "accompli", "accomplie", "accomplir", 
"accorde", "accordent", "account", "accounts", "accro", "accueil", 
"accueille", "accueillir", "accurate", "accusé", "accusent", 
"acérées", "acériculteur", "acha", "achat", "achei", "acheté", 
"acheter", "acho", "acidités", "acknowledge", "acontecem", "acordei", 
"acquis", "across", "action", "activité", "activités", "actresses", 
"actualité", "actuel", "adam", "adaptation", "adapter", "added", 
"addicive", "addicted", "addition", "additives", "addressed", 
"adds", "adeus", "adjoint", "adjointeadministrative", "adjust", 
"administratives", "adopción", "adopté", "adorable" 

。この種のものを参照してください?make.names

library(janitor) newdataobject <- read.csv("yourcsvfilewithpath.csv", header=T) %>% clean_names()

+0

あなたのカラムの名前はすべて私のために働くようです。 Rの変数ネーミングの制限事項については、ここを参照してください。https://stackoverflow.com/questions/9195718/variable-name-restrictions-in-r –

答えて

0

多分あなたは、この新しいパッケージを試すことができます。私はまた、変数の開始と終了のスペースを削除します:

cols <- trimws(cols) 
cols[make.names(cols)==cols] 

# [1] "node" "CLASS" "de" "des"      
# [5] "kmh" "points" "zéro" "aaliassime" ... 
+0

これは適切な回避策です。シンボルのある列が名前変更されているのが分かります。私はこれがmlr :: makeClassifTaskのエラーを解決することを期待しました。何らかの理由でエラーが続くことがあります。 – zunman

1

+0

残念ながら、まだmlr :: makeClassifTaskでエラーが発生しています。 Timが共有するリンクから有効な名前の制限を調べると、実際には予約語である列名があるのだろうかと思います。 – zunman

+0

@ zunman - 'points'は問題になる唯一のもののようです。 – thelatemail

関連する問題