У меня есть список строк (очень больших, миллионов строк), из которых я хочу извлечь определенные части.R: Извлечь часть строки с переменной длиной
Сначала я разделил строку на точку с запятой, а затем извлек ее в определенные разделы. Это сделано немного сложнее, поскольку иногда бывает 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] (http://stackoverflow.com/questions/36143119/how-to-get-last-subelement-of-every -element-of-a-list-in-r) –