2016-06-15 7 views
1

私は次のコードを書いています....何らかの理由でvalidateがキックオフされず、plotコマンドがエラーで実行されます。私は何が欠けていますか?データフレームの観点からShinyはゼロ行データフレームで作業していないことを検証しますか?

library(shiny) 
df <- data.frame(x = 1, y = 1) 

ui <- fluidPage(
    plotOutput('plot') 
) 

server <- function(input, output) { 
    output$plot <- renderPlot({ 
    df <- df[-1, ] 
    validate(
     need(nrow(df), 
      "Not Enough Data") 
    ) 
    plot(df$x, df$y) 
    }) 
} 

shinyApp(ui = ui, server = server) 

すべてが正常に見える:

df <- data.frame(x = 1, y = 1) 
df 
    x y 
1 1 1 

df <- df[-1, ] 
df 
[1] x y 
<0 rows> (or 0-length row.names) 

nrow(df) 
[1] 0 

names(df) 
[1] "x" "y" 
+0

need' 'を参照してください、' Details'セクション。 'need'の式の' 0'結果は失敗と見なされないので、メッセージはトリガされません。 'FALSE'、' NULL'などのオブジェクトは失敗とみなされます。 R '0'と' FALSE'は異なっていることに注意してください。以下の答えはあなたの問題を解決するはずです。 – nicola

答えて

2

は、このヘルプをしていますか?

shiny::need(0, "Won't say anything") 
shiny::need(NULL, "Will say something") 
shiny::need(FALSE, "Will say something") 

試してみてください?

need(nrow(data)>0) 
+1

OMG - 私はとても愚かです...スクリーンから降りる必要があります。それがゼロではない(df)を強制的に実行すると思っている。まあまあ...もちろんではありません。ありがとう。 – Gopala

+0

完全に...私はちょうどそこに隠し、愚かな間違いを作り続けた。ありがとう!ホウ – Gopala

関連する問題