параметры разделения строки в R

Я хотел бы задать вопрос, связанный с вариантами разделения строк в R. Насколько я знаю, я вижу три варианта. strsplit() в базе, str_split() в пакете stringr и separate() в пакете tidy. Интересно, чем они отличаются с точки зрения программирования. Учитывая, что я не обучен программированию, это предложение может быть неясным. Позвольте привести пример. В прошлом я узнал разницу между rbind() и rbindlist() в пакете data.table. (Почему rbindlist лучше, чем rbind?). Это было отличным уроком для меня. Я хотел бы знать, какой вариант строки лучше, чем другие, как в этом посте, посвященном rbind() и rbindlist(). Я надеюсь, что этот пример прояснит то, что я пытаюсь спросить. Спасибо, что уделили время.


person jazzurro    schedule 14.08.2014    source источник
comment
Я рекомендую вам попробовать каждый из них. :) Используйте пакет microbenchmark, чтобы проверить, какой из них работает быстрее.   -  person mgriebe    schedule 14.08.2014
comment
Этот сайт предназначен не для поиска мнений, а для ответов на вопросы по программированию. Перефразируйте свой вопрос так, чтобы на него можно было дать объективный ответ.   -  person Roman Luštrik    schedule 14.08.2014
comment
Роман, спасибо за комментарии. Я не собирался искать варианты. Я скорее хотел знать, чем они отличаются с точки зрения программирования. Я предполагаю, что мое намерение не осуществилось, учитывая, что английский - мой второй язык. Я перефразирую свой вопрос. Спасибо.   -  person jazzurro    schedule 14.08.2014
comment
Если вы действительно пытаетесь осмотреться, в пакете QDAP есть colSplit() и colSplit2df().   -  person lawyeR    schedule 14.08.2014


Ответы (1)


В отличие от strsplit() и str_split(), функция 'separate' берет фрейм данных и помещает выходные данные в отдельные столбцы фрейма данных. str_split позволяет указать максимальное количество строк, возвращаемых для любого разделения.

Есть много способов разделить строки (в некоторых случаях вы можете использовать substr и/или grep). Для больших данных рассмотрите ответы в этом сообщении: Разделить текстовую строку в столбцах data.table

Вот некоторые результаты тестов, и вы можете создать свои собственные:

    require(microbenchmark)
    require(stringr)
    require(tidyr)
    require(data.table)

    dt<-data.table(a=letters[1:20],b=letters[15:21],c=1:100)
    dt[,d:=paste(a,b,sep=".")]
    this<-dt[,d]

    microbenchmark(strsplit(this,"[.]"),str_split(this,"[.]"),separate(dt,"d",c("e","f"),"[.]"))
#    Unit: microseconds
#                                      expr      min       lq    median       uq      max neval
#                     strsplit(this, "[.]")   53.432   56.753   59.4705   62.941  103.846   100
#                    str_split(this, "[.]") 4390.459 4878.137 5020.0180 5118.127 6598.367   100
#     separate(dt, "d", c("e", "f"), "[.]")  165.126  178.107  189.7290  232.142  299.460   
person mgriebe    schedule 14.08.2014