Отредактировано для ясности:
Я создаю блестящее приложение для исследования данных на диаграмме рассеяния. Упрощенный код ниже:
library(shiny)
library(ggplot2)
library(DT)
library(tools)
library(dplyr)
library(tidyverse)
#load data
Data <- Electorate_Data
# Define UI for application
ui <- fluidPage(
titlePanel("Scatterplot"),
br(),
# Sidebar layout with a input and output definitions
sidebarLayout(
# Inputs
sidebarPanel(
# Select variable for y-axis
selectInput(inputId = "y", label = "Y-axis:",
choices = colnames(Data[6:32])
),
# Select variable for x-axis
selectInput(inputId = "x", label = "X-axis:",
choices = colnames(Data[6:32])
),
width = 6
),
# Output:
mainPanel(
# Create a container for tab panels
tabsetPanel(
tabPanel(
title = "Explore the Data",
# Show scatterplot
plotOutput(outputId = "scatterplot")
)
),
width = 6
)
)
)
# Define server function required to create the scatterplot
server <- function(input, output) {
# Create scatterplot object the plotOutput function is expecting
output$scatterplot <- renderPlot({
ggplot(data = Data, aes_string(x = input$x, y = input$y)) +
geom_point()
})
}
# Create a Shiny app object
shinyApp(ui = ui, server = server)
Моя проблема заключается в том, что, когда я выбираю имена столбцов (используя имена функций) для выбора в функции selectInput, а имена содержат пробелы (то есть «Год 12» вместо Год12), моя диаграмма рассеяния не работает , выдав сообщение об ошибке:
Ошибка:: 1: 6: неожиданное 'in'
1: Родился в
Пример кода
# Select variable for y-axis
selectInput(inputId = "y", label = "Y-axis:",
choices = colnames(Data[6:32])
Теперь, если я псевдоним каждой переменной, например, с помощью следующего кода, приложение прекрасно работает:
# Select variable for y-axis
selectInput(inputId = "y", label = "Y-axis:",
choices = "Year12" = "Year 12",
"Born_Aus" = "Born in Australia",
"NoSchool" = "% of the Population Above 15 Years of Age that Didn't Attend School")
),
Мой вопрос - есть ли способ сделать псевдонимы более эффективными, чтобы я мог автоматизировать процесс создания псевдонимов. Я пробовал несколько подходов к взлому с использованием функции names (), но пока она выдает только ошибки.
В конце дня я могу решить это вручную, но, несомненно, есть лучший способ.
Спасибо
Edit:
Я включил подмножество данных, если это поможет. Вам придется изменить код:
# Select variable for x-axis
selectInput(inputId = "x", label = "X-axis:",
choices = colnames(Data[6:32])
),
до
choices = colnames(Data)
для X и Y selectInputs
Данные:
> head(Electorate_Data[14:18])
Born in Australia LOTE NoSchool Year12 Median_age
1 0.6126271 0.29805068 0.012132744 0.5481394 36
2 0.6419959 0.27278743 0.006160949 0.4610346 39
3 0.8234175 0.05199925 0.002323880 0.3564276 40
4 0.5633673 0.45200442 0.011578501 0.4933828 38
5 0.8186847 0.06066808 0.005270832 0.2701636 44
6 0.4439803 0.59099798 0.017304021 0.5374834 35