Я пытаюсь создать блестящее приложение, которое подмножает фрейм данных (включая строки, в которых категориальная переменная соответствует пользовательскому выбору ввода из пользовательского интерфейса) до данных обрабатывается на сервере, а затем визуализируется в пользовательском интерфейсе. Я пробовал несколько разных методов, но я продолжаю получать ошибки, например. «Объект типа„замкнутость“не subsettable»Подмножество фрейма данных на основе пользовательского ввода, Shiny
Тогда, когда я пытаюсь бросить реактивный пользовательский ввод с
target <- toString(reactive({input$value}))
Я получаю следующее сообщение об ошибке:
«Ошибка в as.vector (x, "character"): не может принуждать тип 'замыкание' к вектору типа 'character' '
Любые идеи? Я думаю, что есть что-то концептуальное, что мне не хватает. Вот мой код:
#Server
shinyUI(pageWithSidebar(
headerPanel("Pricing Analysis Tool"),
sidebarPanel(
selectInput("fruit", "Select fruit:",
choices = c(inventory), selected = "banana", multiple = FALSE),
numericInput("delta", "Price Change (%):", 10),
submitButton("Run Simulation")),
mainPanel(
plotOutput("PricePlot")
)))
#server
shinyServer(function(input, output, session) {
target_inventory <- reactive({inventory$product == input$fruit})
...
})
После того, как мои данные инвентаризации подмножество включает продукт только я с оценкой, то я буду использовать renderPlot для создания графики. Я подвешиваю подмножество на основе пользовательского ввода. Есть ли какой-нибудь другой метод, который я должен использовать для динамического подмножества большего набора данных на основе пользовательского ввода?
спасибо за вашу помощь, Ноя
Update: Я был в состоянии успешно Подмножество мои данные на основе переменных данных, вводимых пользователем, а затем манипулировать подмножество и визуализировать его, используя этот код в моем файле сервера (спасибо , nivangio, для размещения кода, который я использовал в качестве шаблона на R-блоггер: http://www.r-bloggers.com/dashboards-in-r-with-shiny-and-googlevis/)
target_inventory <- reactive({
a <- subset(inventory, inventory$product %in% input$fruit)
a <- droplevels(a)
return(a)
})
После того, как подмножество было создано, я был в состоянии использовать его в динамических графиках, ссылаясь как target_inventory()
Просто в обратном порядке и делать 'целевой <- реактивная ({ToString (input $ value)}) ' – Ramnath
Спасибо за быстрый ответ @Ramnath! Предполагая, что вход, выбранный в пользовательском интерфейсе, был «бананом», ожидаете ли вы, что печать (цель) вернет «банан»? Мне все еще не повезло ... –
Вам нужно будет опубликовать код, чтобы мы лучше поняли контекст. В противном случае вы увидите много ответов, основанных на предположениях ваших потребностей. – Ramnath