gpt4 book ai didi

r - 是否有字符向量的 tidyr::extract 等价物?

转载 作者:行者123 更新时间:2023-12-05 02:00:11 26 4
gpt4 key购买 nike

在遇到another question之后,我正在思考这个问题.

library(tidyverse)

set.seed(42)
df <- data.frame(x = cut(runif(100), c(0,25,75,125,175,225,299)))

tidyr::extract 很好地分成了由正则表达式定义的组:

df %>%
extract(x, c("start", "end"), "(\\d+),(\\d+)") %>% head
#> start end
#> 1 0 25
#> 2 0 25
#> 3 0 25
#> 4 0 25
#> 5 0 25
#> 6 0 25

字符向量上的期望输出。我知道您可以创建一个新函数,我想知道它是否已经存在。

x_chr <- as.character(df$x)
des_res <- str_split(str_extract(x_chr, "(\\d+),(\\d+)"), ",")

head(des_res)
#> [[1]]
#> [1] "0" "25"
#>
#> [[2]]
#> [1] "0" "25"
#>
#> [[3]]
#> [1] "0" "25"
#>
#> [[4]]
#> [1] "0" "25"
#>
#> [[5]]
#> [1] "0" "25"
#>
#> [[6]]
#> [1] "0" "25"

最佳答案

您可以在 base R 中使用 strcapture:

strcapture("(\\d+),(\\d+)", x_chr, 
proto = list(start = numeric(), end = numeric()))

# start end
#1 0 25
#2 0 25
#3 0 25
#4 0 25
#5 0 25
#6 0 25
#...
#...

你也可以使用 stringr::str_match :

stringr::str_match(x_chr, "(\\d+),(\\d+)")[, -1]

str_match 中,第一列返回完整模式,而所有后续列都是捕获组。

关于r - 是否有字符向量的 tidyr::extract 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67481993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com