使用包脱胶你可以做:
# install.packages("unglue")
library(unglue)
unglue_vec(mystrings, "{x}/{y}/{z}", var = "y")
#> [1] "D2" "D9" "D22" "D22"
从您可以使用的数据框中,unglue_unnest()
因此无需使用transform()
df <- data.frame(col = mystrings)
unglue_unnest(df, col, "{x}/{y}/{z}", remove = FALSE)
#> col x y z
#> 1 X2/D2/F4 X2 D2 F4
#> 2 X10/D9/F4 X10 D9 F4
#> 3 X3/D22/F4 X3 D22 F4
#> 4 X9/D22/F9 X9 D22 F9
# or used unnamed subpatterns to keep only the middle value
unglue_unnest(df, col, "{=.*?}/{y}/{=.*?}", remove = FALSE)
#> col y
#> 1 X2/D2/F4 D2
#> 2 X10/D9/F4 D9
#> 3 X3/D22/F4 D22
#> 4 X9/D22/F9 D22
由reprex 包(v0.3.0)于 2019-11-06 创建
更多信息:https ://github.com/moodymudskipper/unglue/blob/master/README.md