在R中的tm_map(testfile,removeNumbers)中使用Filter?

时间:2014-05-26 07:27:37

标签: r tm

我使用tm_map(testfile,removeNumbers)来删除文本文件的编号。但是,我需要保留与ipv4和ipv6等词一起出现的数字。 如何使用removeNumbers函数删除其他数字,但保留ipv4和ipv6附带的数字。?

这是我使用的代码:

test.txt = "this is a test file with numbers 1,2 and 3.
              The internet protocals ipv4 and ipv6"

library(tm)

test <- Corpus(DirSource('C:test'), readerControl = list(reader = readPlain))
test <- tm_map(test, removeNumbers)

inspect(test[1])

输出:

$test.txt

this is a test file with numbers , and . The internet protocals ipv and ipv

1 个答案:

答案 0 :(得分:5)

removeNumbers会移除任何数字。你可以得到这样的代码:

getS3method("removeNumbers","PlainTextDocument")
function (x) 
gsub("[[:digit:]]+", "", x)

您应该创建一个新功能,删除“单独”数字或空格后的数字。

remove_alone_nbr <- 
function (x) 
  gsub('\\s*(?<!\\B|-)\\d+(?!\\B|-)\\s*', "", x,perl=TRUE)

然后,如果你测试它:

inspect(tm_map(Corpus(VectorSource(test.txt)), remove_alone_nbr))

你得到:

this is a test file with numbers,and.
              The internet protocals ipv4 and ipv6