我正在尝试将所有适当的数据框列定义为因子,而我所包含的内容包括什么不是(通过ngrams列表,请参见下面的代码片段)一个因素:
data.clean[,names(data.clean)[grep("^[^time]*[^tot]*[^count]*[^score]*[^include]*[^has]*[^__fe]*$",
names(data.clean))]]
<- as.factor(as.character(data.clean[,names(data.clean)[grep("^[^time]*[^tot]*[^count]*[^score]*[^include]*[^has]*[^__fe]*$",
names(data.clean))]]))
但它似乎没有做到这一点。 有什么建议吗? 感谢
答案 0 :(得分:0)
这:
grep("^[^time]*[^tot]*[^count]*[^score]*[^include]*[^has]*[^__fe]*$", names(data.clean))
没有做你认为它正在做的事情。 [^ time] *将匹配任何地方不包含't','i','m'或'e'的任何字符序列。因此,完整的表达式是与任何补充的字符类匹配的任何内容。例如,abbbccdde
将匹配该表达式。
我认为你真正想要的是:
grep("^(time|tot|count|score|include|has|__fe)$", names(data.clean), invert=TRUE)
此模式将与指定的ngrams完全匹配,而invert = TRUE将返回匹配的补码,即所有与指定的ngrams不匹配的单词。