Я пытаюсь использовать цитату/замену как метод применения условия в блестящем. Я не очень хорошо знаком ни с кавычками, ни с заменой, ни с блеском, поэтому вполне возможно, что я неправильно решаю эту проблему.
Я создал простой пример ниже, который иллюстрирует возникшую проблему.
#Create test dataframe
test<-data.frame(x=c(0:10), y=c(rep(1,5),rep(2,6)), z=c("A","A","A","B","B","B","C","C","C","C","C"))
#example of what I would like to do outside shiny app
test[test$x > 5,]
#or using quote and eval
test[eval(quote(test$x > 5)),]
Весь приведенный выше код работает. Но теперь скажем, я хочу применить его в блестящем приложении (и позволить пользователю выбрать условие):
#create simple shiny app
require(shiny)
# Server
server <- function(input, output) {
# subset of nodes
df <- reactive({
#eliminate certain observations
x <- test[eval(input$condition),]
})
output$table <- renderTable({
df <- df()
})
}
# UI
ui <- fluidPage(
radioButtons("conditon", "Condition", choices = c("cond_1" = substitute(test$x > 5), "cond_2" = substitute(test$x<5))),
tableOutput("table")
)
# Create app
shinyApp(ui = ui, server = server)
Но это дает ошибку «Все подсписки в «выборах» должны быть именами»). Я не уверен, как это интерпретировать, и поэтому застрял. Я просмотрел ответы в Shiny - все подсписки в вариантах должны быть названы? но не нашли их полезными.
Был бы признателен за способ решить эту проблему или предложения по лучшему подходу (хотя обратите внимание, что я не могу создавать подмножества заранее, так как для моего более сложного фактического примера это создает проблемы).