如何避免 R 的冲刺f( "very very long string with line break" )中的换行符?



我里面有一个很长的字符串sprintf()。它太长了,以至于打破它会很有用(可读性)(但仅在源代码中,而不是在输出中)。但是每当我断开长字符串时,它都会引入n,因此输出也具有换行符。如何断开源代码中的字符串,使其在输出中不中断?

也许像下面这样的东西会很有用(尽管在不知道输入字符串实际是什么样子或打算如何使用它们的情况下很难判断)。

Fmt <- c(" %s is %d feet tall.n", 
         "%s likes chocolate.n",
         "%s eats %d bars of chocolate", 
         "every night after dinner.")
sprintf(paste(Fmt, collapse = " "), "Sven", 7, "Sven", "He", 3)
# [1] " Sven is 7 feet tall.n Sven likes chocolate.n He eats 3 bars of chocolate every night after dinner."
cat(.Last.value)
#  Sven is 7 feet tall.
#  Sven likes chocolate.
#  He eats 3 bars of chocolate every night after dinner.

使用 gsub() 执行相关替换,例如,将连续出现 2 次或更多次的"空格"字符(包括换行符)替换为单个空格

> sprintf("string: %s", gsub("[[:space:]]{2,}", " ", "a very
+   long
+   string"))
[1] "string: a very long string"

使用@Martin给出的概念,但方式略有不同。

> sprintf(gsub("[[:space:]]{2,}"," ","
+         %s is %d feet tall.
+              %s likes chocolate.
+              %s eats %d bars of chocolate 
+              every night after dinner."), "Sven", 7, "Sven", "He", 3)
[1] " Sven is 7 feet tall. Sven likes chocolate. He eats 3 bars of chocolate every night after dinner."
> 

最新更新