【问题标题】:R grep with regexR grep 与正则表达式
【发布时间】:2014-06-29 22:24:11
【问题描述】:

我正在尝试将所有适当的数据框列定义为因素,并且我拥有的条件包括什么不是因素(通过 ngram 列表,请参见下面的代码 sn-p):

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))]]))

但它似乎并没有起到作用。 任何建议为什么? 谢谢

【问题讨论】:

标签: r regex


【解决方案1】:

这个:

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)

此模式将与指定的 ngram 完全匹配,并且 invert=TRUE 将返回匹配的补集,即所有与指定 ngram 不匹配的单词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多