使用 sprintf 打印换行符 - 有光泽

Posted

技术标签:

【中文标题】使用 sprintf 打印换行符 - 有光泽【英文标题】:printing line breaks using sprintf - with shiny 【发布时间】:2015-04-29 17:03:25 【问题描述】:

我试图在打印时换行。

这是我的代码:

temp <- LETTERS[1:11]

print(sprintf("Rank %s = %s \n", 1:11, temp))

输出:

[1] "Rank 1 = A \n"  "Rank 2 = B \n"  "Rank 3 = C \n"  "Rank 4 = D \n"  "Rank 5 = E \n"  "Rank 6 = F \n"  "Rank 7 = G \n"  "Rank 8 = H \n"  "Rank 9 = I \n" 
[10] "Rank 10 = J \n" "Rank 11 = K \n"

我天真地以为\n 换行了。我想要的输出是:

"Rank 1 = A"  
"Rank 2 = B"  
"Rank 3 = C"  
"Rank 4 = D"  
... etc.

编辑:

Pascal 的评论告诉我它适用于 cat

cat(sprintf("Rank %s = %s \n", 1:11, temp))

我在闪亮的renderText 内部使用此代码。 print 将返回文本,但我无法让 cat 返回文本。

在这种情况下,是否有任何地方可以生成所需的换行符,而不使用cat

【问题讨论】:

它适用于cat 而不是print 哦,对...这实际上导致了一个单独的问题...我将编辑。 @akrun renderPrint 将在使用cat 时返回文本 - 但不幸的是,文本返回时好像它们是一个向量,即换行符不会出现在闪亮的输出中。 【参考方案1】:

您可以使用writeLines 引入换行符,如下所示:

temp <- LETTERS[1:11]
writeLines(sprintf("Rank %s = %s", 1:11, temp))
Rank 1 = A
Rank 2 = B
Rank 3 = C
Rank 4 = D
Rank 5 = E
Rank 6 = F
Rank 7 = G
Rank 8 = H
Rank 9 = I
Rank 10 = J
Rank 11 = K

您也可以将printwriteLines 一起使用,但最后会给您一个NULL。

【讨论】:

【参考方案2】:

您可以在renderPrint 语句中使用cat,在带有verbatimTextOutput 的UI 中呈现。

另一种选择是使用带有 &lt;br/&gt;html 来换行:

renderUI(
  HTML(paste0(sprintf("Rank %s = %s", 1:11, temp), collapse = "<br/>"))
)

使用 uiOutput 在 UI 中呈现。

【讨论】:

以上是关于使用 sprintf 打印换行符 - 有光泽的主要内容,如果未能解决你的问题,请参考以下文章

PHP / JS;将不可见的换行符或换行符转换为html标记以进行打印

我正在尝试打印一个简单的输入,不同之处在于它最后有一个换行符

Bash 中的 Echo 换行符打印文字 \n

角度:段落标签中不打印换行符

Python如何在包含' n'的行中打印带有换行符的文本

Python 打印和文本换行