假设A是数据帧,A的结构如下
Row no C1
1 <p>I'd like to check if an uploaded file is </p>
2 <p>Is there a way to</p>
3 <p>I am import matlab file and construct</p> <pre><code>Error in model.frame.default(formula = expert_data_frame$t_labels ~ .,</code></pre>
对于列C1我正在做的是使用tm包我将行转换为语料库然后使用不同的函数,如removewhitespace,removedopwords。但是如何删除带有特定标签的单词。在上面的例子中,我想删除(代码) - (/ code)标签内的单词但不能这样做。
答案 0 :(得分:1)
正确答案是使用HTML解析器。这需要更多解释。您也可以使用qdap包以不正确的方式完成此操作:
library(qdap)
genX(A$C1, "<code>", "</code>")
## [1] "<p>I'd like to check if an uploaded file is </p>"
## [2] "<p>Is there a way to</p>"
## [3] "<p>I am import matlab file and construct</p> <pre></pre>"
答案 1 :(得分:1)
在紧要关头,你可以这样做:
A$C1 <- gsub('<code>.*?</code>', '', A$C1)
但是,使用正则表达式解析HTML有很多注意事项。
例如,如果我有一个字符串&#39; # this is a
标记&#39;,最后一个&#39;标签&#39;将不剥离。
如果我将正则表达式调整为使用.*
而不是.*?
来解决此问题,那么字符串&#39; some code
和一些文字以及 some more code
&#39 ;会删除所有,甚至是两个代码块之间的(合法)文本。
归结为您对A$C1
所了解的内容。你可以依靠它在一个字符串中没有多个代码块(或者</code>
出现多个代码块)吗?然后使用<code>.*</code>
。你能依靠字符串&#39;&#39; 从不出现在代码块中?然后使用<code>.*?</code>
。
如果你真的想确定,你实际上可以用XML
包解析 XML(你可以依靠A$C1
的内容来形成格式吗? HTML,即没有遗漏标签?)。