использование stringr для разделения векторов, неожиданная длина результата

Что-то простое, что я испортил, используя stringr для управления векторами символов. У меня есть кадр данных следующего вида

library(stringr)
d1 <- data.frame(x = str_c(rpois(10, lambda=5), 
                           rpois(10, lambda=10),
                           sep = "_"))

и я хочу, чтобы все после подчеркивания было отдельной переменной. Это использование str_sub приводит к вектору длины 20, и я не могу объяснить, почему.

d1$y <- str_sub(d1$x, str_locate(d1$x, fixed("_"))+1)

Ошибка в $<-.data.frame(*tmp*, "y", value = c("_12", "_7", "_15", : замена имеет 20 строк, данные имеют 10

Может ли кто-нибудь указать мне, как правильно написать вызов str_sub?


person tomw    schedule 02.05.2013    source источник


Ответы (1)


Это то, что вы хотите сделать (проверьте вывод str_locate, чтобы понять, почему он не работает для вас, также обратите внимание, что str_sub перерабатывает аргументы):

d1$y = str_sub(d1$x, str_locate(d1$x, fixed("_"))[,1] + 1, -1)

Или в базе R:

d1$y = sub("^[^_]*_", "", d1$x)
person eddi    schedule 02.05.2013