2016-12-22 49 views
1

以下是我用於擺脫\r\n並僅提取姓名或名稱後面的短名稱的示例和解決方案或f.s.g.等等如何加快刪除名稱提取

這個例子和解決方案適用於我,但它很慢。我有這樣幾十萬行。

x <- "yyy XXX i.e.\r\n   \r\n  \r\n   \r\n   \r\n INFO: 12235041 \r\n  \r\n   \r\n" 

do.call(rbind, lapply(1:length(x), function(i) strsplit(gsub('[\n\r]',' ',x)," ")[[i]][1])) 
+0

是行數據打破了一致? –

回答

1

如果你不想使用正則表達式,與\r\n固定字符串分割並獲得的第一個元素:

x <- "yyy XXX i.e.\r\n   \r\n  \r\n   \r\n   \r\n INFO: 12235041 \r\n  \r\n   \r\n" 
strsplit(x, "\r\n", fixed=TRUE)[[1]][1] 

R demo

如果換行符樣式不一致你的數據,你可以使用正則表達式替換像

sub("[\r\n].*", "",x) 

其中[\r\n]比賽無論是\r\n,然後.*匹配任何字符0+和這場比賽與sub刪除。這也可以用regmatches實現和^[^\r\n]+是正則表達式在字符串的開頭匹配比CR和LF等1+字符:

unlist(regmatches(x, regexpr("^[^\r\n]+", x))) 
1

我們可以使用sub

sub("\r\n.*", "", x) 
#[1] "yyy XXX i.e." 
+1

是啊......好吧...無論如何還有美好的一天 – Sotos

+0

@Sotos同樣如此。 – akrun