使用"在","如果",作为R中的列名称时出错

时间:2015-01-15 17:43:33

标签: r tm

遇到这个问题。我正在使用一个数据框,其中有数千个列由单词和单词拆分创建。我的一个专栏中的名字是“in”,另一个是“if”。当一个人尝试执行类似数据$ in的操作时,会出现一条错误消息,抱怨这一点。见例:

require(tm)
text<-data.frame(colText<- c("namein", "Inmortal"))
corpus <- Corpus(DataframeSource(text))
corpus[[1]]
<<PlainTextDocument (metadata: 7)>>
  namein
ctrl <- list(tokenize = strsplit_character_tokenizer,wordLengths=c(1, Inf))

dtm <- DocumentTermMatrix(corpus, control = ctrl)
str(dtm)
dtm$dimnames$Terms
[1] "a"    "al"   "e"    "ein"  "i"    "in"   "inm"  "inmo" "l"    "m"    "me"   "mo"   "n"    "na"   "nam"  "name" "o"    "ort" 
[19] "r"    "rt"   "rtal" "t"   

dtmF <- as.data.frame(inspect(dtm))

dtm$inm
[1] 0 1
dtmF$in
Error: unexpected 'in' in "dtmF$in"

strsplit_character_tokenizer <- function(x){
  r<-list()
  max=4
  for (i in 1:max) {
    reg<-paste("([[:alnum:]]{",i,"})", sep="")
    tmp=unlist(strsplit(gsub(reg, "\\1 ", x), " "))
    r<-c(r,tmp)
  }
  return (unlist(r))
} 

因此,当我训练svm进行分类时,它会崩溃, 如何克服这个问题呢?我可以重命名一些列名,但我想要一个更通用的解决方案  感谢

2 个答案:

答案 0 :(得分:2)

你需要我们`标记。

> my$in
Error: unexpected 'in' in "my$in"
> my$`in`
[1] 1 2 3 4 5

答案 1 :(得分:1)

您可以像

一样访问列,而不是使用$
  • dtmF[["in"]]dtmF[["if"]]

  • dtmF[, "in"]dtmF[, "if"]