2017-04-15 3 views
1

は、私が(Errors in if statements in R Shiny checkBoxGroupInputcheckBoxGroupInputと文

前に同様の質問を掲示誰かが指摘したように、私は、関連するデータが含まれていなかった(データは含まれています)場合。ここに私のコードは次のとおりです。

library(shiny) 
library(leaflet) 
library(DT) 
library(ggplot2) 
library(dplyr) 

r_colors <- rgb(t(col2rgb(colors())/255)) 
names(r_colors) <- colors() 

plotdata <- read.csv("C:/Users/Anatoly/Documents/Collatz/RenameLater/RenameLater/MapsAndSuch/RShinyCoral.csv") 
colnames(plotdata) <- c("Year1", "RLIMona", "Year2", "RLICatalina", "Year3", "RLILaParguera1998", "Year4", "RLILAPARGUERA2004") 
parguera <- read.csv("C:/Users/Anatoly/Documents/Collatz/RenameLater/RenameLater/MapsAndSuch/RShinyCoral.csv") 
parguera <- select(parguera, 5:8) 
colnames(parguera) <- c("Year", "1998 Expedition", "Year", "2004 Expedition") 
monaisland <- read.csv("C:/Users/Anatoly/Documents/Collatz/RenameLater/RenameLater/MapsAndSuch/RShinyCoral.csv") 
monaisland <- select(monaisland, 1:2) 
colnames(monaisland) <- c("Year", "Mona Island RLI") 
islacatalina <- read.csv("C:/Users/Anatoly/Documents/Collatz/RenameLater/RenameLater/MapsAndSuch/RShinyCoral.csv") 
islacatalina <- select(islacatalina, 3:4) 
colnames(islacatalina) <- c("Year", "Isla Catalina RLI") 



ui <- fluidPage(
    titlePanel("NOAA Coral Luminescence Data (RLI, 5-year Running Average)"), 
    leafletOutput("mymap"), 
    p(), 
    fluidRow(
    column(3, actionButton("laparguera", "La Parguera Data"), 
    actionButton("mona", "Mona Island Data"), 
    actionButton("isla", "Isla Catalina Data"))), 
    fluidRow(
    column(3, offset = 5, actionButton("visualize", "Visualize Data"))), 
    fluidRow(
    column(7, offset = 5, checkboxGroupInput("checkbox", "Add to plot", 
    c("La Parguera" = "La Parguera", "Mona Island" = "Mona Island", "Isla Catalina" = "Isla Catalina"))), 
    fluidRow(
    DT::dataTableOutput('tbl'), 
    plotOutput("plot1") 
) 
) 
) 
server <- function(input, output, session) { 

    output$mymap <- renderLeaflet({ 
    leaflet() %>% 
     addTiles() %>% 
     addMarkers(lat = 17.95, lng = - 67.05, popup = "La Parguera ") %>% 
     addMarkers(lat = 18.00, lng = -67.50, popup = "Mona Island") %>% 
     addMarkers(lat = 18.2, lng = -69.00, popup = "Isla Catalina") 
    }) 
    observeEvent(input$laparguera, { 
    output$tbl <- DT::renderDataTable(DT::datatable(parguera, options = list(pagelength = 25))) 
    }) 
    observeEvent(input$mona, { 
    output$tbl <- DT::renderDataTable(DT::datatable(monaisland, options = list(pagelength = 25))) 
    }) 
    observeEvent(input$isla, { 
    output$tbl <- DT::renderDataTable(DT::datatable(islacatalina, options = list(pagelength = 25))) 
    }) 
    observeEvent(input$visualize, { 
    output$plot1 <- renderPlot( 
    { 
    if (input$checkbox == c("Mona Island")) 
    { 
    gplot <- ggplot(data = plotdata) + 
    geom_polygon(mapping = aes(x = Year1, y = RLIMona), na.rm = TRUE) + 
     ylab("Candelas (5-year Running Average)") 
    print(gplot) 
    } 
    else if(input$checkbox == c("La Parguera", "Mona Island")) 
    { 
     gplot2 <- ggplot(data = plotdata) + 
     geom_polygon(mapping = aes(x = Year1, y = RLIMona), na.rm = TRUE) + 
     ylab("Candelas (5-year Running Average)") 
     print(gplot2) 
    } 
    else if (input$checkbox == c("La Parguera", "Mona Island", "Isla Catalina")) 
    { 
     gplot3 <- ggplot(data = plotdata) + 
     geom_polygon(mapping = aes(x = Year1, y = RLIMona), na.rm = TRUE) + 
     ylab("Candelas (5-year Running Average)") 
     print(gplot3) 
    } 
    else if(input$checkbox == c("Mona Island", "Isla Catalina")) 
    { 
     gplot4 <- ggplot(data = plotdata) + 
     geom_polygon(mapping = aes(x = Year1, y = RLIMona), na.rm = TRUE) + 
     ylab("Candelas (5-year Running Average)") 
     print(gplot4) 
    } 
    else if(input$checkbox == c("La Parguera", "Isla Catalina")) 
    { 
    gplot5 <- ggplot(data = plotdata) + 
     geom_polygon(mapping = aes(x = Year1, y = RLIMona), na.rm = TRUE) + 
     ylab("Candelas (5-year Running Average)") 
    print(gplot5) 
    } 
    else if(input$checkbox == c("Isla Catalina")) 
    { 
    gplot6 <- ggplot(data = plotdata) + 
     geom_polygon(mapping = aes(x = Year1, y = RLIMona), na.rm = TRUE) + 
     ylab("Candelas (5-year Running Average)") 
    print(gplot6) 
    } 
    else if(input$checkbox == c("La Parguera")) 
    { 
    gplot7 <- ggplot(data = plotdata) + 
     geom_polygon(mapping = aes(x = Year1, y = RLIMona), na.rm = TRUE) + 
     ylab("Candelas (5-year Running Average)") 
    print(gplot7) 
    } 
    else if(is.null(input$checkbox)) 
    { 
    print("Check some damn boxes") 
    } 

     }) 

}) 
} 

shinyApp(ui, server) 

そしてここでは、私のデータです:filedropper.com/rshinycoral

私がであるのボックスに応じて、if文の出力に表示されるプロットを決定するために使用しても問題が生じていますチェックされています。私のプロットが同じであるという事実を今は無視してください。私はこれを後で変更します。

if文が最適ではないことを認識していますが、Enzoの提案を使用する際に問題があります。

ありがとうございます!

+0

あなたはあなたのデータへの実際のリンクを投稿する必要があります。 'filedropper.com/rshinycoral'は何にもリンクしていません。 –

+0

ああ...どうやってCSVファイルを共有できますか? – madhatter5

+0

filedropperなどを使用してください(Dropboxは非常に一般的です)。そのサービスを使ってリンクを投稿する方法を理解するだけです。 –

答えて

1

入力$チェックボックスからの戻り値は文字ベクトルです。あなたの問題は、光沢のあるチェックボックスとは関係なく、ifという文とベクトルではないと思います。

Rがifステートメントで述語を評価するとき、Rはベクトルの最初の項目のみを使用します(これはifelseとは異なる動作です)。そう例えば、次のコードを実行してみて、その結果、警告メッセージの両方を守ってください。

a <- c("a", "b", "c") 

if (a == c("a", "d")) { 
    TRUE 
} else { 
    FALSE 
} 

だからあなたのアプリを修正するために、あなたはベクトルを一致させるためにどのように見えるかを考える必要があります。一つの方法は、%in%例えばとallを使用することです:

if (all(c("a", "d") %in% a)) { 
    TRUE 
} else { 
    FALSE 
} 

if (all(c("a", "b") %in% a)) { 
    TRUE 
} else { 
    FALSE 
} 
関連する問題