Блестящий: реактивная () проверка на read.csv

Я пишу блестящий серверный скрипт, в котором я хочу, чтобы reactive() сначала проверял данные на моем диске c, и если они там есть, то хорошо и хорошо, еще выполняйте другую обработку данных и сохраняйте их для следующей итерации. И имя данных зависит от input$var

Так что в следующий раз будет действительно быстро создавать диаграммы
Ниже приведен только рабочий пример моей большой проблемы.

library(shiny)
library(datasets)
library(ggplot2)
mt=mtcars
shinyServer(function(input, output) {
data1 =reactive({
 if(file.exists("input$var.csv")
   {data=read.csv(input$var.csv)})
  else{    
    data=mt[mt$cyl==input$var,] 
  write.csv(data,file="c:\\input$var.csv")
    }
  })  
  output$Plot1 <- renderPlot({
    data2=data1()
    ggplot(data2$d,aes(x=gear,y=wt))+geom_boxplot() })

})

person Manu Sharma    schedule 24.03.2017    source источник
comment
Я думаю, вам нужно использовать вставку, чтобы определить функцию file.exists, теперь она будет искать файл с именем input$var.csv. Попробуйте: file.exists(paste0(input$var,".csv")) , то же самое касается read.csv(paste0(input$var,".csv")) или вопрос о чем-то другом?   -  person timfaber    schedule 24.03.2017


Ответы (1)


Используйте paste0, как вам сказал timfaber. В функциях R, которые имеют дело с файлами, вы должны указать полную строку, тогда paste0 позволяет вам указать строку, например "name_with_what_is_in_input$var.csv".

ibrary(shiny)
library(datasets)
library(ggplot2)
mt=mtcars
shinyServer(function(input, output) {
data1 =reactive({
 if(file.exists(paste0(input$var,".csv"))
   {data=read.csv(paste0(input$var,".csv"))})
  else{    
    data=mt[mt$cyl==input$var,] 
  write.csv(data,file=paste0("c:\\",input$var,".csv"))
    }
  })  
  output$Plot1 <- renderPlot({
    data2=data1()
    ggplot(data2$d,aes(x=gear,y=wt))+geom_boxplot() })

})
person Smich7    schedule 24.03.2017
comment
Добро пожаловать :) с блестками можно делать много чего. Для эстетики вы можете взглянуть на пакеты shinyjs и shinydashboard. - person Smich7; 28.03.2017