【发布时间】:2017-02-22 09:35:14
【问题描述】:
我有一个字符串列表(非常大,数百万行),我想从中提取特定部分。
我首先在分号处拆分字符串,然后提取到特定部分。它变得有点复杂,因为有时一行中有 3 段,有时 4 段。但我感兴趣的部分总是最后一个和倒数第二个部分。
示例代码:
dataStr = c("secAlways; secExtr1; secExtr2",
"secSometimes; secAlways; secExtr1; secExtr2",
"secSometimes; secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secSometimes; secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2")
splStr <- strsplit(dataStr, ";")
extr1 <- list()
extr2 <- list()
for (i in 1:length(splStr)) {
extr1[i] <- head( tail(splStr[[i]], n=2), n=1)
extr2[i] <- tail(splStr[[i]], n = 1)
}
它可以工作,但是太慢了。我将不胜感激有关如何使这更快的任何想法。我怀疑这可能是通过apply 完成的,但我无法理解它。
如果问题可能与this 问题重复,则会提出该问题。我认为这有点不同,因为我想提取最后两个元素并且部分的数量不同。另外,我还没有得到vapply 的解决方案来处理我的真实示例。
【问题讨论】:
标签: r string performance apply strsplit