2

一些简单的东西我在使用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正确的方式编写电话吗?

4

1 回答 1

4

这就是您想要做的(查看输出str_locate以了解它为什么不适合您,还要注意str_sub回收参数):

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

或者在基础 R 中:

d1$y = sub("^[^_]*_", "", d1$x)
于 2013-05-02T16:21:47.877 回答