繁体   English   中英

R:识别并删除具有无效列名的列

[英]R: Identify and remove columns with invalid column names

有没有办法识别R中的无效列名? 也许使用正则表达式或其他技术。

我正在从文本列中生成DocumentTermMatrix(DTM),然后将此DTM转换为数据框。 我最后得到的列名称无效。 例如

“ node”“ CLASS”“️️️️”“️️️”“ de”“ des”“je devais”“夜晚”“她的眼睛”“cpas聊天室”“郁郁葱葱的宇宙”看到”

当我将此数据集传递给mlr :: makeClassificationTask时,出现以下错误消息

makeClassifTask中的错误(数据= dat,目标=“ CLASS”):对“数据”的声明失败:必须根据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这样的事情。 我还将删除变量开头和结尾的空格,因此:

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

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

也许您可以尝试以下新软件包:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM