R 对向量的每个元素中的单词重新排序

R 对向量的每个元素中的单词重新排序,r,regex,lapply,stringr,strsplit,R,Regex,Lapply,Stringr,Strsplit,我想更改向量中每个元素的词序。具体地说,我想做另一个向量,其中第一个单词现在是许多长度不同的元素的最后一个单词 数据 metadata1 <- c("reference1 an organism", "reference2 another organism here", "reference3 yet another organism is here") metadata1感谢您快速准确的响应!我选择了stringer::w

我想更改向量中每个元素的词序。具体地说,我想做另一个向量,其中第一个单词现在是许多长度不同的元素的最后一个单词


数据

metadata1 <- c("reference1 an organism", 
               "reference2 another organism here",
               "reference3 yet another organism is here")

metadata1感谢您快速准确的响应!我选择了
stringer::word()
解决方案,因为它允许我更轻松地将元数据与数据重新对齐。一种标准方法:
sub(“^(\\w+)(.*)”,“\\2\\1”,metadata1)
@Frank这也是一个出色的解决方案!
metadata2 <- c("an organism reference1", 
               "another organism here reference2",
               "yet another organism is here reference3")
metadata2 <- lapply(strsplit(metadata1," "), function(x) paste(x[c(2,3,4,5,1)]))
library(stringr)
paste(word(metadata1,2, -1), word(metadata1,1), sep = " ")
# [1] "an organism reference1"                 
# [2] "another organism here reference2"       
# [3] "yet another organism is here reference3"

# OR

sapply(metadata1, function(x){ y = unlist(strsplit(x, " "))
                           paste(c(y[-1],y[1]),collapse = " ")
                           })


# OR ( this is purely @Frank's answer)( Shall remove when he puts it as an answer)
sub("^(\\w+) (.*)$", "\\2 \\1", metadata1)