Предположим, у меня есть вектор строк (строк), который я очистил с веб-страницы .txt, используя readLines
. Некоторые строки начинаются с «<», что обычно указывает на начало нового абзаца. Некоторые строки начинаются с буквы, что обычно указывает на то, что она подключена к линии перед ней. Я хочу уметь конкатенировать строки, относящиеся к одному и тому же абзацу.Как векторизовать функцию `paste` в R?
Мой план состоит в том, чтобы найти линии, начинающиеся с «<», и объединить все линии между двумя строками, начинающимися с «<». По сути, у меня есть список индексов. Например, я могу конкатенировать lines[1:3]
, lines[4:4]
, lines[5:9]
и так далее. Есть ли способ векторизовать это? Я не могу просто сделать paste(lines[begin.index : end.index])
, но это может дать вам представление о том, чего я надеюсь достичь.
Вот некоторые фиктивные данные, в качестве примера, так как мой фактические данные слишком долго:
[1] "<P> sampletextsampletext"
[2] "sampletextsampletext</P>"
[3] "<P> sampletext"
[4] "sampletext"
[5] "sampletext</P>"
[6] "<P> sampletext </P>"
Я хотел бы объединить линии 1 и 2 вместе, и любит 3, 4 и 5 вместе, и линия 6 останется прежним.
Пожалуйста, включите образец данных. Ваша проблема не совсем понятна из описания. – nrussell
Вы должны понимать, что запрос «как vectorize paste()» звучит очень странно для людей R, потому что paste() _is_ vectorized. Может быть, вы просто ищете аргумент 'collapse'? – joran
Звучит так, как будто у вас есть группы линий (1: 3, 4: 4, 5: 9), и вам нужно знать, как применять 'paste' с аргументом' collapse' для каждой группы. 'dplyr' или' data.table' являются вашими друзьями здесь, хотя 'aggregate', вероятно, будет работать нормально. – Gregor