2014-09-23 3 views
2

반짝 이는 애플 리케이션을 발견했는데 이것이 나를 미치게 만들었습니다 ....... 나는 server.R과 ui.R 코드의 수많은 예제를 보았습니다. 잘못하고있다. shiny : 데이터 세트에서 그래프로 선택한 열을 플로팅

예로 들어 홍채 데이터 세트 촬영이 매우 기본적인 일이 있다면 미리 사과는 .......... 나는 qplot를 사용하여 다른에 대한 하나의 열 간단한 무언가를 플롯 할 바람직

을 ggplot ggplot output

난 그냥 추출, 데이터 집합을 부분 집합 아니에요 나는이 반응 기능을 필요가 있다고 생각하지 않습니다 qplot output

및 ggplot2를 사용하여 다음과 같은 에러가 발생합니다 그러나, qplot 사용하여 나는이를 얻을 수 플롯 할 열.

server.R 코드

library(shiny) 
library(shinyapps) 
library(ggplot2) 

shinyServer(function(input, output, session) { 

    output$text1 <- renderText({input$id1}) 

    output$text2 <- renderText({input$select1}) 

    output$plot1 <- renderPlot({ 
      g <- qplot(Sepal.Length, input$select1, data = iris) 
      print(g) 
    }) 

})

또는 변경

  g <- ggplot(iris, aes(x = Sepal.Length, y = input$select1)) 
      g <- g + geom_line(col = "green", lwd =1) + 
        labs(x = "Date", y = "Ranking") + 
        theme_bw() + scale_y_reverse() 

ui.R 코드에게 qplot 호출을

library(shiny) 
library(shinyapps) 
data(iris) 
opts <- unique(colnames(iris)) 
opts <- opts[-1] ## want to keep Sepal.Length as the x values 

shinyUI(pageWithSidebar(
    headerPanel('test with iris database'), 
    sidebarPanel(
      selectInput(inputId = "select1", label = "select", 
         choices = opts), 
      textInput(inputId = "id1", label = "Input Text", "") 
    ), 
    mainPanel(
      p('Output text1'), 
      textOutput('text1'), 
      textOutput('text2'), 
      plotOutput('plot1') 
    ) 
)) 

답변

5

을 대체 할 ggplot 기능을 사용하여 aes 문을 aes_string으로 변경하고 x을 문자열로 지정하십시오. 이렇게하면 문제가 해결됩니다.

g <- ggplot(iris, aes_string(x = "Sepal.Length", y = input$select1)) 
g <- g + geom_line(col = "green", lwd =1) + 
    labs(x = "Date", y = "Ranking") + 
    theme_bw() + scale_y_reverse() 
+0

감사합니다. Charles가 내 문제를 해결합니다. 나는 aes_string이 입력 $ select1의 반환이 문자 스트링이기 때문에 필요하다고 가정하고 있는가? 나는 as.name을 사용하여 non-character로 입력 $ select1을 정의하려고 시도했지만, 그것은 나에게 효과가 없었다. – laoisman

+0

@laoisman, 사실 나는 내부가 무엇인지 완전히 확신하지 못했습니다. 이 대답은 경험과 문서에서 보여준 것입니다. 궁금하신 분은 Shiny 패키지의 관리자에게 연락하시기 바랍니다. 죄송합니다. 후속 질문에 답변을 드릴 수 없습니다. – cdeterman

관련 문제