web-dev-qa-db-ja.com

R光沢のあるエラー:オブジェクト入力が見つかりません

次のコードは私のShinyuiです。

library(shiny)
shinyUI(fluidPage(

titlePanel("All Country Spend"),

  sidebarLayout(
    sidebarPanel(  selectInput("split", 
        label = "Choose Fill For the Chart",
        choices = c("Action.Obligation","Action_Absolute_Value"),
      selected = "Action.Obligation"
        )
            ),
    mainPanel(plotOutput("SpendChart"))
)
))

そして、以下はサーバーコードです:

library(shiny)
library(ggplot2)

shinyServer(function(input, output) {

spend <- read.csv("data/Ctrdata.csv")
output$SpendChart <- renderPlot({

    Country <- spend$Principal.Place.of.Performance.Country.Name
    ggplot(spend, aes(x = Country, y = input$split)) + geom_bar(stat = "identity")

})

})

実行するたびに、次のエラーが発生します。

"eval(expr、envir、enclos)のエラー:オブジェクト '入力'が見つかりません"

各国の契約支出の正味額と絶対額を切り替える単純な棒グラフをレンダリングしようとしていますが、selectInputボックスからの「split」という名前の入力が認識されません。

これが私のデータフレームのサンプルです:

data.frame(Country = c("Turk", "Turk", "Saudi", "Saudi", "Ger", "Ger"),
Action.Obligation = c(120,-345,565,-454, 343,-565),
Action_Absolute_Value = c(120,345,565,454,343,565))
10
user2907249

問題は、提供されたデータフレームspendのコンテキストで変数を評価するggplotにあります。あなたが欲しいものは:

ggplot(spend, aes_string(x = "Country", y = input$split))

したがって、作業中server.Rコードは次のとおりです。

library(shiny)
library(ggplot2)

shinyServer(function(input, output) {

spend <- data.frame(Country = c("Turk", "Turk", "Saudi", "Saudi", "Ger", "Ger"),
                    Action.Obligation = c(120,-345,565,-454, 343,-565),
                    Action_Absolute_Value = c(120,345,565,454,343,565))

    output$SpendChart <- renderPlot({


        ggplot(spend, aes_string(x = "Country", y = input$split)) +
            geom_bar(stat = "identity")

    })

})

明らかに、spenddfをCSVインポートに置き換えることができます。

4
Konrad