印刷线使用sprintf打破 - 有光泽

时间:2015-02-27 04:10:58

标签: r

我正在尝试打印时换行。

这是我的代码:

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

3 个答案:

答案 0 :(得分:0)

您可以使用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。

答案 1 :(得分:0)

您可以在cat语句中使用renderPrint,用verbatimTextOutput在UI中进行渲染。

另一种选择是将HTML与一些<br/>一起使用来打破界限:

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

使用uiOutput在用户界面中呈现。

答案 2 :(得分:-2)

您可以按照here所述,将renderText更改为renderUI并使用htmlOutput。脚本可能类似于

library(shiny)

runApp(
  list(
    ui = fluidPage(
      htmlOutput("text1")
    ),
    server = function(input, output){
      output$text1 <- renderUI({

        temp <- LETTERS[1:11]
        HTML(
          paste0(sprintf("Rank %s = %s", 1:11, temp), collapse = "<br>")
        )
      })
    }))

结果是

enter image description here