사용자가 드롭 다운 목록에서 열 이름을 선택하고 값을 할당하여 데이터 프레임의 하위 집합을 만들 수있는 반짝이는 응용 프로그램이 있습니다. 아래 스 니펫에서 df1은 데이터 프레임이며 사용자가 드롭 다운에서 "country"를 선택하고 텍스트 상자에 "UK"를 입력하면 임시 df, temp_dat에 UK 값만 있어야합니다. 어떤 이유로 3 열의 0 행이 반환되었음을 이해할 수 없습니다. 누군가가 이걸 도와 줄 수 있습니까? 미리 감사드립니다.Shiny : 사용자 열 입력을 기반으로 동적으로 하위 데이터 집합
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