私はユーザーがドロップダウンリストから列名を選択して値を割り当てることによってデータフレームをサブセット化することができる光沢のあるアプリケーションを持っています。以下のスニペットでは、df1はデータフレームであり、ユーザーがドロップダウンから「国」を選択してテキストボックスに「UK」と入力すると、一時的なdf、temp_datには英国の値のみが含まれている必要があります。何らかの理由で、3列の0行が返されたとわかりません。誰か助けてくれますか?前もって感謝します。シャイニー:ユーザー列の入力に基づいて動的にサブセットされたデータ
library(shinydashboard)
ui = dashboardPage(dashboardHeader(),
dashboardSidebar(),
dashboardBody(uiOutput("subset_check1"), uiOutput("subsetbox1")))
server = function(input, output, session)
{
names = c("Jane", "Doe", "Job", "Right")
emp_id = c(1000, 1001, 1002, 1003)
country = c("UK", "UK", "UK", "US")
df1 = data.frame(names, emp_id, country)
file1_cols = colnames(df1)
output$subset_check1 = renderUI(checkboxInput(
"subcheck1",
"Would you like to subset this dataset with a condition?"
))
observe({
if (!is.null(input$subcheck1))
{
if (input$subcheck1 == "TRUE")
{
#print("box was checked")
output$subsetbox1 = renderUI(flowLayout(
selectInput(
"subsetbox1sel",
"Select column:",
choices = c(file1_cols),
multiple = T
),
textInput("subsetbox1text", "Enter value")
))
observe({
if (!is.null(input$subsetbox1sel))
{
if (!is.null(input$subsetbox1text))
{
cols_sel1 = as.character(input$subsetbox1sel)
vals_sel1 = as.character(input$subsetbox1text)
temp_dat = df1[df1$cols_sel1 == vals_sel1, ]
print(temp_dat)
}
}
})
}
}
})
}
サブセット(df1、cols_sel1 == vals_sel1)を無駄にしようとしました。私は間違っていることを理解できません。 cols_sel1を印刷するとcountryとvals_sel1が表示されます。英国は文字として表示されます。なぜ、temp_datにはまだ私が期待するデータがないのですか? – rookieJoe
FYI:コードを実行可能にするために、 'library(shinydashbard)'を追加し、uiコードを 'ui = dashboardPage(dashboardHeader()、dashboardSidebar()、dashboardBody(uiOutput(" subset_check1 ")、uiOutput(" subsetbox1 ")))'。 –
お詫び申し上げます。これを反映するために質問を更新しました。 – rookieJoe