data.frame 的放置错误出现在发布后。我应该把它放在哪里?
Error caused by the placement of data.frame arises after publishing. Where Should I put it instead?
我正在为我的团队制作箱线图制作器,并希望将我们所有的数据都包含在制作器中。所以我在保存数据的代码中做了一个data.frame
,但我想我把它放在了错误的地方。每次我 运行 我这边的代码都能完美运行,但是当我使用 Shiny 和 运行 发布时,我得到 Warning: Error in eval: object 'Percents' not found
错误(告诉我它找不到数据?)如果我能帮到任何人,那就太好了,这是代码:
library(shiny)
All_Data <- data.frame(
Name = as.character(c("Jeff","Bob","Greg")),
Year = c(2015,2015,2015),
Bacteria = c("A","B","C"),
Site = c("C1","C1","C1"),
Percents = c(1,2,4),
stringsasfactors = TRUE
)
ndata <-data.frame(
Name = as.character("Preset"),
Year = c("0"),
Bacteria = as.factor(c("0")),
Site = as.factor(c("0")),
Percents = as.numeric(c("0")),
stringsAsFactors = TRUE
)
Names <- c("2015 Acidobacteria C2", "2015 Actinobacteria C2","2015 Alpha-Proteobacteria C2", "2015 Bacteriodetes C2","2015 Verrucomicrobia C2","2016 Acidobacteria C2", "2016 Actinobacteria C2","2016 Alpha-Proteobacteria C2", "2016 Bacteriodetes C2","2016 Verrucomicrobia C2","2018 Acidobacteria C2", "2018 Actinobacteria C2","2018 Alpha-Proteobacteria C2", "2018 Bacteriodetes C2","2018 Verrucomicrobia C2","2019 Acidobacteria C2", "2019 Actinobacteria C2","2019 Alpha-Proteobacteria C2", "2019 Bacteriodetes C2","2019 Verrucomicrobia C2")
Years <- c("2015","2016","2018","2019")
names(Years)<-c("2015 C2","2016 C2","2018 C2","2019 C2")
Sites <- c("","C2")
# Define UI for application
ui <- fluidPage(
# Application title
titlePanel("ISAMR DNA Group Boxplot Maker"),
# Sidebar
sidebarLayout(
sidebarPanel(width = 4,
h3("Which Data Sets Would You Like to Compare?"),
selectInput("Set1", "", choices = c(Sites, Years, Names)),
selectInput("Set2", "",choices = c(Sites, Years, Names)),
selectInput("factor","Based on Which Factor?", choices = c("Year", "Site", "Bacteria", "Site by Year", "Bacteria by Year", "Bacteria by Site by Year")),
textInput("title", h4("Title"), placeholder = "Enter title..."),
numericInput("numcol","How many colors?",value=1,min=1,max=5),
h4("Pick the colors you want, leave the rest blank."),
selectInput("col1","",choices = c("",colors())),
selectInput("col2","",choices = c("",colors())),
selectInput("col3","",choices = c("",colors())),
selectInput("col4","",choices = c("",colors())),
selectInput("col5","",choices = c("",colors())),
actionButton("Submit", "Submit")
),
# Show a chosen plot
mainPanel(
#uiOutput("data"),
DT::dataTableOutput("data"),
plotOutput("plot")
)
)
)
# Define server logic
server <- function(input, output) {
ndata<-eventReactive(input$Submit, {req(input$Submit)
if (input$Set1 %in% Names & input$Set2 %in% Names){
ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Name == input$Set2)
}
else if (input$Set1 %in% Names & input$Set1 %in% Years){
ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Year == input$Set2)
}
else if (input$Set1 %in% Names & input$Set1 %in% Sites){
ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Site == input$Set2)
}
else if (input$Set1 %in% Years & input$Set1 %in% Names){
ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Name == input$Set2)
}
else if (input$Set1 %in% Years & input$Set2 %in% Years){
ndata <- filter(All_Data, All_Data$Year == input$Set1 | All_Data$Year == input$Set2)
}
else if (input$Set1 %in% Years & input$Set2 %in% Sites){
ndata <- filter(All_Data, All_Data$Year == input$Set1 | All_Data$Site == input$Set2)
}
else if (input$Set1 %in% Sites & input$Set1 %in% Names){
ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Name == input$Set2)
}
else if (input$Set1 %in% Sites & input$Set1 %in% Years){
ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Year == input$Set2)
}
else if (input$Set1 %in% Sites & input$Set1 %in% Sites){
ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Site == input$Set2)
} })
output$data <- DT::renderDataTable({
ndata()
})
observeEvent(input$numcol,{req(input$numcol)
if (input$numcol == 1){coll<-c(input$col1)}
if (input$numcol == 2){coll<-c(input$col1,input$col2)}
if (input$numcol == 3){coll<-c(input$col1,input$col2,input$col13)}
if (input$numcol == 4){coll<-c(input$col1,input$col2,input$col3,input$col4)}
if (input$numcol == 5){coll<-c(input$col1,input$col2,input$col3,input$col4,input$col5)}
})
observeEvent(input$factor,{req(input$factor)
if (input$factor == "Year"){
output$plot <- renderPlot(
boxplot(Percents ~ Year, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Site"){
output$plot <- renderPlot(
boxplot(Percents ~ Site, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Bacteria"){
output$plot <- renderPlot(
boxplot(Percents ~ Bacteria, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Site by Year"){
output$plot <- renderPlot(
boxplot(Percents ~ Year%in%Site, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Bacteria by Year"){
output$plot <- renderPlot(
boxplot(Percents ~ Year%in%Bacteria, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Bacteria by Site by Year"){
output$plot <- renderPlot(
boxplot(Percents ~ Year%in%Site%in%Bacteria, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
})
}
# Run the application
shinyApp(ui = ui, server = server)
(我没有包含真实数据)
在您的 All_Data
创作中,stringsasfactors = True
需要 stringsasfactors = TRUE
或至少 T
。还建议在 textInput 中使用占位符参数,例如 textInput("title", h4("Title"), placeholder = "Enter title...")
我想知道百分比错误是否是由于我的上述建议引起的,因为所有值都没有正确分配
你这里有一些问题。您需要逐层定义 ndata
反应式数据框,确保每一层都能提供您所期望的。而不是 input$Set1 %in% Years
,它应该是 Years %in% input$Set1
。我会把它留给你来修复它,因为它有很多条件,有些是重复的。我将只使用 airquality
数据。最后,请只定义一次output$plot
。您可以在内部有条件地绘制。我只是向您展示该程序有效。请看下面。你应该可以适应它。
ui <- fluidPage(
# Application title
titlePanel("ISAMR DNA Group Boxplot Maker"),
# Sidebar
sidebarLayout(
sidebarPanel(width = 4,
h3("Which Data Sets Would You Like to Compare?"),
selectInput("Set1", "", choices = c(Sites, Years, Names)),
selectInput("Set2", "",choices = c(Sites, Years, Names)),
selectInput("factor","Based on Which Factor?", choices = c("Year", "Site", "Bacteria", "Site by Year", "Bacteria by Year", "Bacteria by Site by Year")),
textInput("title", h4("Title"), value = "Enter title..."),
numericInput("numcol","How many colors?",value=1,min=1,max=5),
h4("Pick the colors you want, leave the rest blank."),
selectInput("col1","",choices = c("",colors())),
selectInput("col2","",choices = c("",colors())),
selectInput("col3","",choices = c("",colors())),
selectInput("col4","",choices = c("",colors())),
selectInput("col5","",choices = c("",colors())),
actionButton("Submit", "Submit")
),
# Show a chosen plot
mainPanel(
#uiOutput("data"),
DT::dataTableOutput("data")
,plotOutput("plot")
)
)
)
# Define server logic
server <- function(input, output) {
ndata <- eventReactive(input$Submit, {
req(input$Submit,input$Set1,input$Set2)
ndata <- airquality
# if (Names %in% input$Set1 & Names %in% input$Set2 ){
# ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Name == input$Set2)
# }
# else if (Names %in% input$Set1 & Years %in% input$Set1){
# ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Year == input$Set2)
# }
# else if (Names %in% input$Set1 & Sites %in% input$Set1){
# ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Site == input$Set2)
# }
# else if (input$Set1 %in% Years & input$Set1 %in% Names){
# ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Name == input$Set2)
# }
# else if (input$Set1 %in% Years & input$Set2 %in% Years){
# ndata <- filter(All_Data, All_Data$Year == input$Set1 | All_Data$Year == input$Set2)
# }
# else if (input$Set1 %in% Years & input$Set2 %in% Sites){
# ndata <- filter(All_Data, All_Data$Year == input$Set1 | All_Data$Site == input$Set2)
# }
# else if (input$Set1 %in% Sites & input$Set1 %in% Names){
# ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Name == input$Set2)
# }
# else if (input$Set1 %in% Sites & input$Set1 %in% Years){
# ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Year == input$Set2)
# }
# else if (input$Set1 %in% Sites & input$Set1 %in% Sites){
# ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Site == input$Set2)
# }
return(ndata)
})
output$data <- DT::renderDataTable({
ndata()
})
observeEvent(input$numcol, {
req(input$numcol)
if (input$numcol == 1){coll<-c(input$col1)}
if (input$numcol == 2){coll<-c(input$col1,input$col2)}
if (input$numcol == 3){coll<-c(input$col1,input$col2,input$col13)}
if (input$numcol == 4){coll<-c(input$col1,input$col2,input$col3,input$col4)}
if (input$numcol == 5){coll<-c(input$col1,input$col2,input$col3,input$col4,input$col5)}
})
observeEvent(input$factor, {
req(input$factor)
output$plot <- renderPlot({
boxplot(Temp~Month,
data=ndata(),
main="Different boxplots for each month",
xlab="Month Number",
ylab="Degree Fahrenheit",
col="orange",
border="brown"
)
# if (input$factor == "Year"){
# boxplot(Percents~Year, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll)
# }
#
# else if (input$factor == "Site"){
# boxplot(Percents ~ Site, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll)
# }
#
# else if (input$factor == "Bacteria"){
# boxplot(Percents ~ Bacteria, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll)
# }
})
# else if (input$factor == "Site by Year"){
# output$plot <- renderPlot(
# boxplot(Percents ~ Year%in%Site, data = ndata, main = input$title, ylab = "Relative Abundance", col = coll))
# }
#
# else if (input$factor == "Bacteria by Year"){
# output$plot <- renderPlot(
# boxplot(Percents ~ Year%in%Bacteria, data = ndata, main = input$title, ylab = "Relative Abundance", col = coll))
# }
#
# else if (input$factor == "Bacteria by Site by Year"){
# output$plot <- renderPlot(
# boxplot(Percents ~ Year%in%Site%in%Bacteria, data = ndata, main = input$title, ylab = "Relative Abundance", col = coll))
# }
})
}
# Run the application
shinyApp(ui = ui, server = server)
产出
我正在为我的团队制作箱线图制作器,并希望将我们所有的数据都包含在制作器中。所以我在保存数据的代码中做了一个data.frame
,但我想我把它放在了错误的地方。每次我 运行 我这边的代码都能完美运行,但是当我使用 Shiny 和 运行 发布时,我得到 Warning: Error in eval: object 'Percents' not found
错误(告诉我它找不到数据?)如果我能帮到任何人,那就太好了,这是代码:
library(shiny)
All_Data <- data.frame(
Name = as.character(c("Jeff","Bob","Greg")),
Year = c(2015,2015,2015),
Bacteria = c("A","B","C"),
Site = c("C1","C1","C1"),
Percents = c(1,2,4),
stringsasfactors = TRUE
)
ndata <-data.frame(
Name = as.character("Preset"),
Year = c("0"),
Bacteria = as.factor(c("0")),
Site = as.factor(c("0")),
Percents = as.numeric(c("0")),
stringsAsFactors = TRUE
)
Names <- c("2015 Acidobacteria C2", "2015 Actinobacteria C2","2015 Alpha-Proteobacteria C2", "2015 Bacteriodetes C2","2015 Verrucomicrobia C2","2016 Acidobacteria C2", "2016 Actinobacteria C2","2016 Alpha-Proteobacteria C2", "2016 Bacteriodetes C2","2016 Verrucomicrobia C2","2018 Acidobacteria C2", "2018 Actinobacteria C2","2018 Alpha-Proteobacteria C2", "2018 Bacteriodetes C2","2018 Verrucomicrobia C2","2019 Acidobacteria C2", "2019 Actinobacteria C2","2019 Alpha-Proteobacteria C2", "2019 Bacteriodetes C2","2019 Verrucomicrobia C2")
Years <- c("2015","2016","2018","2019")
names(Years)<-c("2015 C2","2016 C2","2018 C2","2019 C2")
Sites <- c("","C2")
# Define UI for application
ui <- fluidPage(
# Application title
titlePanel("ISAMR DNA Group Boxplot Maker"),
# Sidebar
sidebarLayout(
sidebarPanel(width = 4,
h3("Which Data Sets Would You Like to Compare?"),
selectInput("Set1", "", choices = c(Sites, Years, Names)),
selectInput("Set2", "",choices = c(Sites, Years, Names)),
selectInput("factor","Based on Which Factor?", choices = c("Year", "Site", "Bacteria", "Site by Year", "Bacteria by Year", "Bacteria by Site by Year")),
textInput("title", h4("Title"), placeholder = "Enter title..."),
numericInput("numcol","How many colors?",value=1,min=1,max=5),
h4("Pick the colors you want, leave the rest blank."),
selectInput("col1","",choices = c("",colors())),
selectInput("col2","",choices = c("",colors())),
selectInput("col3","",choices = c("",colors())),
selectInput("col4","",choices = c("",colors())),
selectInput("col5","",choices = c("",colors())),
actionButton("Submit", "Submit")
),
# Show a chosen plot
mainPanel(
#uiOutput("data"),
DT::dataTableOutput("data"),
plotOutput("plot")
)
)
)
# Define server logic
server <- function(input, output) {
ndata<-eventReactive(input$Submit, {req(input$Submit)
if (input$Set1 %in% Names & input$Set2 %in% Names){
ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Name == input$Set2)
}
else if (input$Set1 %in% Names & input$Set1 %in% Years){
ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Year == input$Set2)
}
else if (input$Set1 %in% Names & input$Set1 %in% Sites){
ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Site == input$Set2)
}
else if (input$Set1 %in% Years & input$Set1 %in% Names){
ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Name == input$Set2)
}
else if (input$Set1 %in% Years & input$Set2 %in% Years){
ndata <- filter(All_Data, All_Data$Year == input$Set1 | All_Data$Year == input$Set2)
}
else if (input$Set1 %in% Years & input$Set2 %in% Sites){
ndata <- filter(All_Data, All_Data$Year == input$Set1 | All_Data$Site == input$Set2)
}
else if (input$Set1 %in% Sites & input$Set1 %in% Names){
ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Name == input$Set2)
}
else if (input$Set1 %in% Sites & input$Set1 %in% Years){
ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Year == input$Set2)
}
else if (input$Set1 %in% Sites & input$Set1 %in% Sites){
ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Site == input$Set2)
} })
output$data <- DT::renderDataTable({
ndata()
})
observeEvent(input$numcol,{req(input$numcol)
if (input$numcol == 1){coll<-c(input$col1)}
if (input$numcol == 2){coll<-c(input$col1,input$col2)}
if (input$numcol == 3){coll<-c(input$col1,input$col2,input$col13)}
if (input$numcol == 4){coll<-c(input$col1,input$col2,input$col3,input$col4)}
if (input$numcol == 5){coll<-c(input$col1,input$col2,input$col3,input$col4,input$col5)}
})
observeEvent(input$factor,{req(input$factor)
if (input$factor == "Year"){
output$plot <- renderPlot(
boxplot(Percents ~ Year, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Site"){
output$plot <- renderPlot(
boxplot(Percents ~ Site, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Bacteria"){
output$plot <- renderPlot(
boxplot(Percents ~ Bacteria, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Site by Year"){
output$plot <- renderPlot(
boxplot(Percents ~ Year%in%Site, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Bacteria by Year"){
output$plot <- renderPlot(
boxplot(Percents ~ Year%in%Bacteria, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
else if (input$factor == "Bacteria by Site by Year"){
output$plot <- renderPlot(
boxplot(Percents ~ Year%in%Site%in%Bacteria, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll))
}
})
}
# Run the application
shinyApp(ui = ui, server = server)
(我没有包含真实数据)
在您的 All_Data
创作中,stringsasfactors = True
需要 stringsasfactors = TRUE
或至少 T
。还建议在 textInput 中使用占位符参数,例如 textInput("title", h4("Title"), placeholder = "Enter title...")
我想知道百分比错误是否是由于我的上述建议引起的,因为所有值都没有正确分配
你这里有一些问题。您需要逐层定义 ndata
反应式数据框,确保每一层都能提供您所期望的。而不是 input$Set1 %in% Years
,它应该是 Years %in% input$Set1
。我会把它留给你来修复它,因为它有很多条件,有些是重复的。我将只使用 airquality
数据。最后,请只定义一次output$plot
。您可以在内部有条件地绘制。我只是向您展示该程序有效。请看下面。你应该可以适应它。
ui <- fluidPage(
# Application title
titlePanel("ISAMR DNA Group Boxplot Maker"),
# Sidebar
sidebarLayout(
sidebarPanel(width = 4,
h3("Which Data Sets Would You Like to Compare?"),
selectInput("Set1", "", choices = c(Sites, Years, Names)),
selectInput("Set2", "",choices = c(Sites, Years, Names)),
selectInput("factor","Based on Which Factor?", choices = c("Year", "Site", "Bacteria", "Site by Year", "Bacteria by Year", "Bacteria by Site by Year")),
textInput("title", h4("Title"), value = "Enter title..."),
numericInput("numcol","How many colors?",value=1,min=1,max=5),
h4("Pick the colors you want, leave the rest blank."),
selectInput("col1","",choices = c("",colors())),
selectInput("col2","",choices = c("",colors())),
selectInput("col3","",choices = c("",colors())),
selectInput("col4","",choices = c("",colors())),
selectInput("col5","",choices = c("",colors())),
actionButton("Submit", "Submit")
),
# Show a chosen plot
mainPanel(
#uiOutput("data"),
DT::dataTableOutput("data")
,plotOutput("plot")
)
)
)
# Define server logic
server <- function(input, output) {
ndata <- eventReactive(input$Submit, {
req(input$Submit,input$Set1,input$Set2)
ndata <- airquality
# if (Names %in% input$Set1 & Names %in% input$Set2 ){
# ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Name == input$Set2)
# }
# else if (Names %in% input$Set1 & Years %in% input$Set1){
# ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Year == input$Set2)
# }
# else if (Names %in% input$Set1 & Sites %in% input$Set1){
# ndata <- filter(All_Data, All_Data$Name == input$Set1 | All_Data$Site == input$Set2)
# }
# else if (input$Set1 %in% Years & input$Set1 %in% Names){
# ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Name == input$Set2)
# }
# else if (input$Set1 %in% Years & input$Set2 %in% Years){
# ndata <- filter(All_Data, All_Data$Year == input$Set1 | All_Data$Year == input$Set2)
# }
# else if (input$Set1 %in% Years & input$Set2 %in% Sites){
# ndata <- filter(All_Data, All_Data$Year == input$Set1 | All_Data$Site == input$Set2)
# }
# else if (input$Set1 %in% Sites & input$Set1 %in% Names){
# ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Name == input$Set2)
# }
# else if (input$Set1 %in% Sites & input$Set1 %in% Years){
# ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Year == input$Set2)
# }
# else if (input$Set1 %in% Sites & input$Set1 %in% Sites){
# ndata <- filter(All_Data, All_Data$Site == input$Set1 | All_Data$Site == input$Set2)
# }
return(ndata)
})
output$data <- DT::renderDataTable({
ndata()
})
observeEvent(input$numcol, {
req(input$numcol)
if (input$numcol == 1){coll<-c(input$col1)}
if (input$numcol == 2){coll<-c(input$col1,input$col2)}
if (input$numcol == 3){coll<-c(input$col1,input$col2,input$col13)}
if (input$numcol == 4){coll<-c(input$col1,input$col2,input$col3,input$col4)}
if (input$numcol == 5){coll<-c(input$col1,input$col2,input$col3,input$col4,input$col5)}
})
observeEvent(input$factor, {
req(input$factor)
output$plot <- renderPlot({
boxplot(Temp~Month,
data=ndata(),
main="Different boxplots for each month",
xlab="Month Number",
ylab="Degree Fahrenheit",
col="orange",
border="brown"
)
# if (input$factor == "Year"){
# boxplot(Percents~Year, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll)
# }
#
# else if (input$factor == "Site"){
# boxplot(Percents ~ Site, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll)
# }
#
# else if (input$factor == "Bacteria"){
# boxplot(Percents ~ Bacteria, data = ndata(), main = input$title, ylab = "Relative Abundance", col = coll)
# }
})
# else if (input$factor == "Site by Year"){
# output$plot <- renderPlot(
# boxplot(Percents ~ Year%in%Site, data = ndata, main = input$title, ylab = "Relative Abundance", col = coll))
# }
#
# else if (input$factor == "Bacteria by Year"){
# output$plot <- renderPlot(
# boxplot(Percents ~ Year%in%Bacteria, data = ndata, main = input$title, ylab = "Relative Abundance", col = coll))
# }
#
# else if (input$factor == "Bacteria by Site by Year"){
# output$plot <- renderPlot(
# boxplot(Percents ~ Year%in%Site%in%Bacteria, data = ndata, main = input$title, ylab = "Relative Abundance", col = coll))
# }
})
}
# Run the application
shinyApp(ui = ui, server = server)
产出