Я хотел бы создать приборную панель тернарного сюжета с помощью Shiny. Но я застрял в этой ошибке. Этот код принимает файл CSV и обновляет три раскрывающихся списка. Затем созданный троичный график имеет эти три раскрывающихся значения. Проблема в том, что я все время получаю сообщение об ошибке от функции «aes», которая сообщает мне, что объект «x_s» не найден. это мой код:
ui <- fluidPage(
plotOutput("ggtern"),
fileInput("csv_file", "source", multiple = FALSE, accept = "csv",
width = NULL, buttonLabel = "Browse...",
placeholder = "No file selected"),
selectInput("x_val", "Choose x values:", choices=c()),
selectInput("y_val", "Choose y values:", choices=c()),
selectInput("z_val", "Choose z values:", choices=c()),
)
server <- function(input, output) {
selectedData <- reactive({
inFile <- input$csv_file
if (is.null(inFile))
return(NULL)
df <- read.csv(inFile$datapath,na.strings = c("", "NA", "#N/A"))
updateSelectInput(session,"x_val","x series",colnames(df))
updateSelectInput(session,"y_val","y series",colnames(df))
updateSelectInput(session,"z_val","z series",colnames(df))
return(df)
})
T1 <- reactive({
if (is.null(selectedData()))
return(NULL)
temp <- selectedData()[input$x_val]
return (unlist(temp))
})
T2 <- reactive({
if (is.null(selectedData()))
return(NULL)
temp <- selectedData()[input$y_val]
return (unlist(temp))
})
T3 <- reactive({
if (is.null(selectedData()))
return(NULL)
temp <- selectedData()[input$z_val]
return (unlist(temp))
})
output$ggtern <- renderPlot({
if (is.null(selectedData()))
return(NULL)
x_s <- T1()
y_s <- T2()
z_s <- T3()
vec <- aes(x_s,y_s,z_s)
obj <- ggtern(data=selectedData(), vec)
print(obj)
})
}
shinyApp(ui = ui, server = server)
Я пробовал много других способов реализовать это, но каждый раз получаю ту же ошибку.