获取第一个空格后的所有字符串元素

idf*_*oor 2 split r

如果我有一个字符元素除以空格,我如何创建 2 个向量,一个在空格之前,一个在空格之后。一件重要的事情是某些字符有多个空格

示例:假设我的向量称为 vec1

(head) vec 1
'rrrt rrr' 'tttt   gg'    'tt pp' 'hhhh      k'
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,有些单词被多个空格分隔,我想要这样的 2 个向量

head(vector1)
'rrrt' 'tttt' 'tt' 'hhhh'
head(vector2)
'rrr' 'gg' 'pp' 'k'
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,第一个向量在第一个空间之前包含所有内容,第二个向量在空间之后包含所有内容,但没有实际空间。

akr*_*run 5

我们可以使用subwith 模式\\S+(一个或多个非空格)后跟一个或多个空格来删除前缀,或者我们可以删除空格后跟非空格以删除后缀。

sub("^\\S+\\s+", '', vec1)
sub("\\s+\\S+$", '', vec1)
Run Code Online (Sandbox Code Playgroud)

或用于read.table将其转换为data.frame具有两列的 a ,然后提取这些列

d1 <- read.table(text= vec1, header=FALSE, stringsAsFactors=FALSE)
v1 <- d1[,1]
v2 <- d1[,2]
Run Code Online (Sandbox Code Playgroud)

或者另一种选择是strsplit将其拆分为 alist然后提取list元素。

lst <- strsplit(vec1, "\\s+")
v1 <- sapply(lst ,`[`, 1)
v2 <- sapply(lst, `[`, 2)
Run Code Online (Sandbox Code Playgroud)

数据

vec1 <- c("rrrt rrr", "tttt   gg", "tt pp", "hhhh      k")
Run Code Online (Sandbox Code Playgroud)