Yun
Yun

Reputation: 89

How do I split a line via a delimiter?

I have a dataframe.

[1]  Question  1. What is your name? Question  2. Where do you live? Question  3. ~~~
[2]  Question  1. What are your hobbies? Question  2. What is your school? Question  3. ~~~

I want to split the lines with "question " as the delimiter. Can I solve this?

Result :

[1] Question  1. What is your name?
[2] Question  2. Where do you live?
[3] Question  3. ~~~
[4] Question  1. What are your hobbies?
[5] Question  2. What is your school?
[6] Question  3. ~~~

Upvotes: 1

Views: 49

Answers (2)

Maël
Maël

Reputation: 52359

Here's a one-line solution using stringr::str_split. Use unlist to unlist.

str_split(x, "(?<=.)(?=Question)")

[[1]]
[1] "Question  1. What is your name? " "Question  2. Where do you live? "
[3] "Question  3.  ~~~~"              

[[2]]
[1] "Question  1. What are your hobbies? " "Question  2. What is your school? "  
[3] "Question  3.  ~~~~" 

data

x <- c('Question  1. What is your name? Question  2. Where do you live? Question  3.  ~~~~',
       'Question  1. What are your hobbies? Question  2. What is your school? Question  3.  ~~~~')

Upvotes: 0

jay.sf
jay.sf

Reputation: 73702

Using strsplit and lookarounds, trimws afterwards.

strsplit(x, '(?<=\\s)(?=Question)', perl=TRUE) |> lapply(trimws)
# [[1]]
# [1] "Question  1. What is your name?" "Question  2. Where do you live?" "Question  3.  How old are you?" 
# 
# [[2]]
# [1] "Question  1. What are your hobbies?"  "Question  2. What is your school?"   
# [3] "Question  3.  What are your hobbies?"

Data:

x <- c('Question  1. What is your name? Question  2. Where do you live? Question  3.  How old are you?',
       'Question  1. What are your hobbies? Question  2. What is your school? Question  3.  What are your hobbies?')

Upvotes: 2

Related Questions