闪亮:reactive() 检查 read.csv

Posted

技术标签:

【中文标题】闪亮:reactive() 检查 read.csv【英文标题】:Shiny: reactive() check on read.csv 【发布时间】:2017-08-17 00:11:58 【问题描述】:

我正在编写一个闪亮的服务器脚本,我希望 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() )

)

【问题讨论】:

我认为你需要使用 paste 来确定 file.exists 函数,现在它会寻找一个名为 input$var.csv 的文件。试试:file.exists(paste0(input$var,".csv"))read.csv(paste0(input$var,".csv")) 也一样,还是有其他问题? 【参考方案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() )

)

【讨论】:

欢迎你 :) 你可以用闪亮的东西做很多事情。为了美观,您可以查看 shinyjsshinydashboard 包。

以上是关于闪亮:reactive() 检查 read.csv的主要内容,如果未能解决你的问题,请参考以下文章

如何在闪亮的应用程序中制作kable table reactive()?闪亮+ kable

Reactive fileInput()带有Leaflet的闪亮应用程序

如何使用闪亮的输入/输出读取向量?

如果声明R闪亮

观察事件的闪亮范围错误

使用 UTF-8 编码的 read.csv() [重复]