2

我想问一个与R中字符串拆分选项相关的问题。据我所知,我可以看到三个选项。strsplit()在基地,str_split()stringr包装中,separate()tidy包装中。我想知道它们与编程的观点有何不同。鉴于我没有受过程序员培训,这句话可能不清楚。让我给你举个例子。在过去,我了解了包中rbind()rbindlist()中的区别。data.table为什么 rbindlist 比 rbind “更好”?)。这对我来说是很棒的学习。我想知道哪个字符串选项比其他选项更好,就像这篇与rbind()and相关的帖子一样rbindlist()。我希望这个例子能澄清我想问的问题。感谢您抽出宝贵的时间。

4

1 回答 1

1

与 strsplit() 和 str_split() 不同,separate 接受一个数据帧并将输出放在数据帧的单独列中。str_split 允许您指定要为任何拆分返回的最大字符串数。

有多种方法可以拆分字符串(在某些情况下,您可以使用 substr 和/或 grep)。对于大数据,请考虑这篇文章中的答案: Split text string in a data.table columns

以下是一些基准测试结果,您可以创建自己的:

    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   
于 2014-08-14T07:25:39.397 回答