Изменить порядок слов в каждом элементе вектора

Я хочу изменить порядок слов для каждого элемента в векторе. В частности, я хотел бы создать другой вектор, в котором первое слово теперь является последним словом для ряда элементов, различающихся по длине.


Данные

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

Желаемый результат

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)]))



Я попытался использовать lapply() для разделения каждого элемента пробелами с помощью strsplit(), а затем снова вставить их вместе, используя индекс порядка. Это получает слова в правильном порядке, но возвращает список, в котором слова являются отдельными элементами, и поскольку некоторые элементы длиннее других, я получаю «NA», когда номер индекса больше, чем количество слов в этом элементе. Я также пробовал sapply(), который возвращает матрицу, и tapply(), который не работает.



person Greg Nelson    schedule 02.02.2017    source источник
comment
Один стандартный способ: sub("^(\\w+) (.*)$", "\\2 \\1", metadata1)   -  person Frank    schedule 02.02.2017
comment
@Frank, это тоже отличное решение!   -  person joel.wilson    schedule 03.02.2017


Ответы (1)


person    schedule
comment
Спасибо за быстрый и точный ответ! Я выбрал решение stringer::word(), потому что оно позволяет мне легче согласовывать метаданные с данными. - person Greg Nelson; 02.02.2017