R tidyr提取程序无法捕获多行表达式

时间:2019-09-18 01:52:42

标签: r tidyr

我有一个带有多行字符串的小标题,并且我想使用tidyr::extract通过正则表达式组提取变量,其中值是多行字符串。但是,在以下示例中,我不提取-分隔的组。

library(tidyverse)

df <- tibble(x = "12\n34-56\n78-90\n12")

my_regex <- regex("(.*)-(.*)-(.*)", multiline = TRUE, dotall = TRUE)

extract(df, x, c("y", "z", "a"), my_regex)
#> # A tibble: 1 x 3
#>   y     z     a    
#>   <chr> <chr> <chr>
#> 1 <NA>  <NA>  <NA>

正则表达式本身没有错,如stringr::str_view所示。

str_view(df$x, my_regex)

这是tidyr::extract的已知错误或功能吗?(请注意,我的实际问题更复杂,不像tidyr::separate那样容易受<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="16dp" tools:context=".MainActivity"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"> <!-- Contains the list of all sensors, generated in onCreate(). --> <TextView android:id="@+id/sensor_list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/placeholder_text" android:visibility="visible" tools:visibility="visible" /> </ScrollView> 的影响。)< / p>

1 个答案:

答案 0 :(得分:1)

tidyr 只是不支持 stringr :: regex 的输出,这不是错误,请参见:https://github.com/tidyverse/tidyr/issues/749https://github.com/tidyverse/tidyr/issues/693

您可以:

library(tidyverse)

df <- tibble(x = "12\n34-56\n78-90\n12")
extract(df, x, c("y", "z", "a"), regex = "(?s)(.*)-(.*)-(.*)")
#> # A tibble: 1 x 3
#>   y        z        a       
#>   <chr>    <chr>    <chr>   
#> 1 "12\n34" "56\n78" "90\n12"

reprex package(v0.3.0)于2019-09-18创建