遇到这个问题。我正在使用一个数据框,其中有数千个列由单词和单词拆分创建。我的一个专栏中的名字是“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进行分类时,它会崩溃, 如何克服这个问题呢?我可以重命名一些列名,但我想要一个更通用的解决方案 感谢
答案 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"]