这基本上是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 :(得分:0)
deparse()
列表,然后删除不需要的字符。
gsub("list|[()]", "", deparse(l))
# [1] "-1, \"quicksort\", NULL"
答案 1 :(得分:0)
我首选的解决方案是
paste(lapply(l, deparse), collapse = ", ")
绕过了对gsub
内容的需求并支持任何类型的列表元素。我认为它也更具可读性。