如何使用 purrr str_split 文本到几列

How to str_split text to few column using purrr

我有数据框,我想将列拆分为 3 个:

df<-data.frame(x=1:5,y=paste0("num-",1:5,"-ber"))
df
  x         y
1 1 num-1-ber
2 2 num-2-ber
3 3 num-3-ber
4 4 num-4-ber
5 5 num-5-ber

结果一定是这样的:

 x  y1 y2  y3
1 1 num  1 ber
2 2 num  2 ber
3 3 num  3 ber
4 4 num  4 ber
5 5 num  5 ber

我正在尝试这样的变体:

df%>%
  purrr::map_chr(stringr::str_split(y,pattern="-"))

但没有任何积极的结果

谢谢!

我们可以使用 tidyr 中的 separate,如果未指定 sep,它会自动选择分隔符。在这种情况下,它是 -

library(dplyr)
library(tidyr)
df %>% 
    separate(y, into= paste0('y', 1:3))
#  x  y1 y2  y3
#1 1 num  1 ber
#2 2 num  2 ber
#3 3 num  3 ber
#4 4 num  4 ber
#5 5 num  5 ber

或者 base R 选项将使用 read.table 读取,指定 sep-cbind 与 'x' 列

cbind(df['x'], read.table(text=as.character(df$y), sep="-", col.names = paste0("y", 1:3)))