我有一个带有多行字符串的小标题,并且我想使用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>
答案 0 :(得分:1)
tidyr 只是不支持 stringr :: regex 的输出,这不是错误,请参见:https://github.com/tidyverse/tidyr/issues/749和https://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创建