1
データテーブルの列と各列の一意の値の数を出力するサイドバーを作成しようとしています。以下のコードは名前のために働いていますが、ユニークな値については、リスト変数がunlist()である場合にのみ表示することができます。私は、複数の行にわたるリスト変数を扱うtextOutputまたは同等のものを取得することについて話している記事を見つけることができませんでした。私たちは、-fullコードRシャイニーダイナミックリスト変数を複数の行に変換する
library(shiny)
data(mtcars)
if (interactive()) {
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
fluidRow(
column(6, checkboxGroupInput("dsnamesGrp","Variable name")),
column(6, htmlOutput("dsordsGrp"), inline= FALSE)
)
),
mainPanel(
dataTableOutput('contents'))
)
)
server <- function(input, output, session) {
output$contents <- renderDataTable({mtcars})
dsnames <- names(mtcars)
cb_options <- list()
cb_options[dsnames] <- dsnames
updateCheckboxGroupInput(session, "dsnamesGrp",
label = "Column name",
choices = cb_options,
selected = "")
output$dsordsGrp <- renderUI({
HTML(paste(lengths(lapply(mtcars, unique)), collapse="<br/>"))
})
}
}
shinyApp(ui, server)
それとも、我々は同じコードを使用している場合list
ord_values <- lengths(lapply(mtcars, unique))
output$dsordsGrp <- renderText({ord_values})
にunique
要素にlengths
を使用することができます
library(shiny)
data(mtcars)
if (interactive()) {
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
fluidRow(
column(6, checkboxGroupInput("dsnamesGrp","Variable name")),
column(6, uiOutput("dsordsGrp"), inline= FALSE)
)
),
mainPanel(
dataTableOutput('contents'))
)
)
server <- function(input, output, session) {
output$contents <- renderDataTable({mtcars})
dsnames <- list()
dsnames <- names(mtcars)
cb_options <- list()
cb_options[dsnames] <- dsnames
updateCheckboxGroupInput(session, "dsnamesGrp",
label = "Column name",
choices = cb_options,
selected = "")
ord_values <- list()
ord_values <- lapply(mtcars, function(x)length(unique(x)))
output$dsordsGrp <- renderText({unlist(ord_values)})
}
}
shinyApp(ui, server)
に
renderText
を変更しましたlapplyとsapplyのフォームに変更された長さは、私が今得たのと同じ出力になります。私はまだ2番目の列がエントリの文字列(25 3 27 22 22 29 30 2 2 3 6)として認識され、行に分割されません。名前の列を揃えて別々の行として出力する方法を知っていますか? – terrangreen@terrangreenあなたの質問は、その 'unlist'部分を削除する方法だと思いましたか?これを行に分けたい場合は 'cat'を使います – akrun
さて、catはコンソールで目的の結果を得ます。私はまだそれが良い場合は、リストの変数(またはベクトル)を複数の行に渡って表示する必要があります。 – terrangreen