2017-06-23 37 views
0

這基本上是this question的R等價物。粘貼混合列表並在字符串上保留引號

我有混合元素的列表:

l = list(-1, "quicksort", NULL) 

而且我希望把它變成一個字符串:

string = '-1, "quicksort", NULL' 

但我無法弄清楚如何輕鬆地保持引號內字符串沒有把所有元素放在引號中:

paste(l, collapse = ", ") # WRONG 
# "-1, quicksort, NULL" 

paste(shQuote(l), collapse = ", ") # WRONG 
# '"-1", "quicksort", "NULL"' 

我有一個解決方案,但它似乎笨拙:

paste(lapply(l, function(x) if(class(x) == "character") shQuote(x) else x), 
    collapse=", ") 
# '-1, "quicksort", NULL' 

是否有更簡單的(即,沒有if聲明)解決方案?

回答

0

deparse()該列表然後刪除不需要的字符。

gsub("list|[()]", "", deparse(l)) 
# [1] "-1, \"quicksort\", NULL" 
0

我首選的方案最終被

paste(lapply(l, deparse), collapse = ", ") 

繞過了gsub東西的需求,並支持任何類型的列表元素。我認爲它也更具可讀性。

相關問題