2015-04-07 1 views
0

Я работаю с объектом списка, состоящим из переменного количества ключей цитирования.Как получить одну строку (цитату из pandoc) из списка строк (ключи цитаты)

mylist <- structure(list(steele1998pulsus = "steele1998pulsus", wright1997evaluation = "wright1997evaluation", wright1996continuous = "wright1996continuous"), .Names = c("steele1998pulsus", "wright1997evaluation", "wright1996continuous")) 

paste0("@", unlist(mylist)) 

генерирует:

[1] "@steele1998pulsus"  "@wright1997evaluation" "@wright1996continuous" 

Я пробовал различные комбинации кошки() и пасты() без успеха - моя цель это текстовая строка в формате ниже (pandoc цитата из нескольких ключей) ,

[@steele1998pulsus; @wright1997evaluation; @wright1996continuous] 

ответ

1

Я не большой с командами R в строковых обработки (я считаю, что это очень трудно вспомнить разницу между collapse и sep), но я могу сделать это так:

paste("[", paste(paste0("@", mylist), collapse="; "), "]", sep="") 

, производящего желаемый результат:

> paste("[", paste(paste0("@", mylist), collapse="; "), "]", sep="") 
[1] "[@steele1998pulsus; @wright1997evaluation; @wright1996continuous]" 

Кроме того, потому что мы не нуждаемся в sep аргумент для любого из шагов, которые мы банку J усть использование paste0 для всех из них:

paste0("[", paste0(paste0("@", mylist), collapse="; "), "]") 
+0

или 'Sprintf ('[@% s]', paste0 (unlist (MyList), коллапс =«; @ ')) ', FYI' paste0' является коротким для 'paste (..., sep =' ')' – rawr

+0

Если у вас есть три отдельных элемента, и все они получают «вставлять» «sep-arately» как бы , вы получаете один элемент, связанный 'sep'. Если у вас есть один объект Скажите вектор-символ или список с тремя элементами, вы получите три элемента, если не используете 'collapse'. Функции 'paste' очень похожи на' mapply'. –