在R中按最后一个空格分割字符串

5
我有一个带有多个空格的字符串向量。我想将其分成两个向量,最后一个空格为分界点。例如:
vec <- c('This is one', 'And another', 'And one more again')

Should become

vec1 = c('This is', 'And', 'And one more again')
vec2 = c('one', 'another', 'again')

有没有一种快捷简便的方法来完成这个操作呢?我以前用 gsub 和正则表达式做过类似的事情,并成功地得到了第二个向量,具体操作如下:
vec2 <- gsub(".* ", "", vec)

但是我不知道如何获取vec1。

提前感谢。


5
vec1 <- gsub(“ [^ ] * $”,“”,vec) - FrankieTheKneeMan
这对于包含其他空格(制表符、换行符)或仅有一个单词的字符串来说是脆弱的。 - FrankieTheKneeMan
谢谢Frankie,但这只显示第一个空格之前的字符(在这种情况下是“This”,“And”和“And”),而不是第二个空格之前的所有字符。 - user1165199
我更新了正则表达式,请试一下这个。 - FrankieTheKneeMan
太好了,谢谢你! - user1165199
1个回答

10

以下是使用前瞻断言的一种方法:

do.call(rbind, strsplit(vec, ' (?=[^ ]+$)', perl=TRUE))
#      [,1]           [,2]     
# [1,] "This is"      "one"    
# [2,] "And"          "another"
# [3,] "And one more" "again" 

谢谢Matthew,这个方法可行,Frankie在我的问题下的评论也是。 - user1165199
这个更好,因为我可以在 separate() 函数中使用它,并且它完美地保留了列的值。谢谢 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接