#r #shiny
#r #блестящий
Вопрос:
У меня есть действительно простой CSV-файл.
> head(data)
X Y
1 1/1/1900 1
2 1/2/1900 2
3 1/3/1900 4
4 1/4/1900 8
5 16
И у меня есть блестящее приложение, которое отображает этот файл после того, как пользователь загружает файл
это код
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Basic dashboard"),
dashboardSidebar(
fileInput("file1", "Choose CSV File",
multiple = TRUE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv")),
sidebarMenu(
menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
menuItem("Widgets", tabName = "widgets", icon = icon("th"))
)
),
dashboardBody(
tabItems(
# First tab content
tabItem(tabName = "dashboard",
fluidRow(
box(plotOutput("plot1", height = 250))
)
),
# Second tab content
tabItem(tabName = "widgets",
h2("Widgets tab content")
)
)
)
)
server <- function(input, output) {
options(shiny.maxRequestSize=100*1024^2)
data <- reactive({
inFile <- input$file1
if(!is.null(inFile)){
read.csv(inFile$datapath, header = TRUE, stringsAsFactors = FALSE)
}
})
output$plot1 <- renderPlot({
req(data())
plot(data()$X, data()$Y)
})
}
shinyApp(ui, server)
Мой вопрос в том, как вы изменяете данные реактивного объекта ()?, допустим, я хочу изменить столбец X на столбец даты, используя as.Команда Date, а затем я хочу удалить строку 5, потому что она имеет пустое значение, а затем умножить столбец Y на 10 и после того, как я все это сделаю, затем построить график? спасибо за помощь
Комментарии:
1. вы можете назначить его другому объекту, модифицировать его и нанести на график. Например:
dat <- data(); dat$X <- as.Date(dat$X)
…plot(dat$X, dat$Y)
2. Миллион благодарностей работает как шарм, если вы хотите использовать это в качестве ответа, я приму это, и еще раз спасибо 🙂
Ответ №1:
Вы можете присвоить свой реактивный объект переменной.
data <- reactive({
inFile <- input$file1
if(!is.null(inFile)) {
read.csv(inFile$datapath, header = TRUE, stringsAsFactors = FALSE)
}
})
dat <- data()
dat$X <- as.Date(dat$X)
dat <- dat[-5,]
dat$Y <- dat$Y * 10
output$plot1 <- renderPlot({
plot(dat$X, dat$Y)
})