2016-12-22 48 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