Wann funktioniert das Setzen von 'perl = TRUE' in 'strsplit' nicht (wie beabsichtigt oder überhaupt)?
Ich habe gerade ein Benchmarking durchgeführt, als ich versucht habe, Code zu optimieren, und habe das beobachtetstrsplit
mitperl=TRUE
istschneller als laufenstrsplit
mitperl=FALSE
. Zum Beispiel,
set.seed(1)
ff <- function() paste(sample(10), collapse= " ")
xx <- replicate(1e5, ff())
system.time(t1 <- strsplit(xx, "[ ]"))
# user system elapsed
# 1.246 0.002 1.268
system.time(t2 <- strsplit(xx, "[ ]", perl=TRUE))
# user system elapsed
# 0.389 0.001 0.392
identical(t1, t2)
# [1] TRUE
Meine Frage (oder vielmehr eine Variation der Frage im Titel) lautet also, unter welchen Umständen dies unbedingt erforderlich wäreperl=FALSE
(Auslassen derfixed
unduseBytes
Parameter)? Mit anderen Worten, was können wir nicht verwendenperl=TRUE
Dies kann durch Einstellen erfolgenperl=FALSE
?