Plot interaktif yang cemerlang dengan skala likert yang dipilih

Saya telah membuat beberapa skala likert dengan paket R "likert" dan ingin memplot masing-masing skala tersebut dengan mengkilap ketika tombol radio yang satu itu dipilih. Skala sampelnya adalah:

a <- sample(rep((1:5),5))
b <- sample(rep((1:5),5))
c <- data.frame(sapply(data.frame(a), factor))
d <- data.frame(sapply(data.frame(b), factor))
scaledc <- likert(c)
scaledd <- likert(d)

Kode mengkilapnya adalah:

ui <- fluidPage(
  titlePanel("Survey"),
  sidebarLayout(
    sidebarPanel(
      selectInput("type",
                  "Plot Type",
                  choices = c("Likert"="bar",
                              "Density"="density",
                              "Heatmap"="heat"), selected="Likert"),
      radioButtons("qtype", 
                    "Question type:",
                    c("Agreement"="scaledc", "Helpfulness"="scaledd"),
                selected="scaledc")
  ),


# Show a plot of the generated distribution
mainPanel(
  tabsetPanel(
    tabPanel("Yearly Data", plotOutput("distPlot1"))
      )
    )
  )
)



#server
server <- function(input, output) {  
  output$distPlot1 <- renderPlot({plot(input$qtype, type=input$type)+
      ggtitle("How agree are you with following statements?")}, height = 1000)

}

Kesalahan yang dikembalikan mengkilap "membutuhkan nilai 'ylim' yang terbatas." Saya pikir itu karena input$qtype tidak meneruskan informasi yang benar ke perintah plot, tapi saya tidak tahu bagaimana cara memperbaikinya. Terima kasih sebelumnya!


person dorayin    schedule 08.12.2017    source sumber
comment
Kode yang Anda berikan bukanlah contoh mandiri yang dapat direproduksi. Silakan tambahkan kode secukupnya agar mudah dijalankan. Saya memperhatikan bahwa panggilan plot akan mencoba dan memplot aggScaled dan bar yang akan gagal.   -  person Andrew Chisholm    schedule 08.12.2017


Jawaban (1)


Saya baru saja menyelesaikan masalahnya. Kode yang hilang di server adalah:

  scale <- reactive({
   get(input$qtype)
})
  output$dat <- renderPrint({
   scale()
})

Dan kemudian melakukan plot dengan skala() akan menampilkan plot yang dipilih.

person dorayin    schedule 08.12.2017