如何在两个特定字符R之间分割字符串

问题描述

我希望将某些已刮除的期刊出版物数据整齐地分为几列(即作者,标题,期刊等)。我大部分时间都是这样做的,但是我被卡在下面的条目中,该条目在标题的中间输入\ n行。

structure(list(value = "               What wrist should you wear your actigraphy device on? Analysis of dominant vs.\n            non-dominant wrist actigraphy for measuring sleep in healthy adults. \n                     Sleep Science. \n                        10:132-135.\n             2017\n\n                 Full text if available"),row.names = c(NA,-1L),class = c("tbl_df","tbl","data.frame"))

解决此问题,我不想在\ n行之间简单地拆分,而是想在\ n行和大写字母之间的位置处拆分字符串(因此标题不会拆分为两个单独的列)。

我在\ n行拆分的原始代码仅使用:

str_split_fixed(x,"\n",2)[,2]

我已经使用正则表达式进行了多种组合尝试,但无法设法找出如何在两个字符之间进行分割并在任一侧包含这些字符。

解决方法

您可以使用:

strsplit(df$value,'\\n\\s+(?=[A-Z])',perl = TRUE)

#[[1]]
#[1] "               What wrist should you wear your actigraphy device on? Analysis of dominant vs.\n            non-dominant wrist actigraphy for measuring sleep in healthy adults. "
#[2] "Sleep Science. \n                        10:132-135.\n             2017"                                                                                                         
#[3] "Full text if available"                                                          

这会以换行符分隔文本,后跟一个或多个空格,后跟一个大写字母。我们对大写字母使用正向超前正则表达式,以便它保留在字符串中。