使用 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
您也可以将print
与writeLines
一起使用,但最后会给您一个NULL。
【讨论】:
【参考方案2】:您可以在renderPrint
语句中使用cat
,在带有verbatimTextOutput
的UI 中呈现。
另一种选择是使用带有 <br/>
的 html 来换行:
renderUI(
HTML(paste0(sprintf("Rank %s = %s", 1:11, temp), collapse = "<br/>"))
)
使用 uiOutput
在 UI 中呈现。
【讨论】:
以上是关于使用 sprintf 打印换行符 - 有光泽的主要内容,如果未能解决你的问题,请参考以下文章
PHP / JS;将不可见的换行符或换行符转换为html标记以进行打印