tidyverse / stringr

A fresh approach to string manipulation in R
https://stringr.tidyverse.org
Other
603 stars 187 forks source link

Doc clarification for str_subset about dropping names. #507

Closed Ax3man closed 1 month ago

Ax3man commented 1 year ago

str_subset drops names. This appears to a design choice from stringi (https://github.com/gagolews/stringi/issues/59). Fair enough.

But I got bitten by this today, as I read the documentation stating: _"It's a wrapper around x[str_detect(x, pattern)], and is equivalent to grep(pattern, x, value = TRUE)."_ But both those alternatives do keep names, and there is no other mention of dropping attributes. I suggest to add "but without preserving attributes like names", or something similar.

Consider:

fruit <- c(A = "apple", B = "banana", C = "pear", D = "pineapple")
str_subset(fruit, "b")
fruit[str_detect(fruit, 'b')]
grep('b', fruit, value = TRUE)
hadley commented 1 year ago

I think we can just fix the behaviour.

hadley commented 3 months ago

Looks like the easiest way to fix this would be to switch to making str_subset() use [ + str_detect().