R-反应数据子集

R-反应数据子集,r,shiny,R,Shiny,在Stackoverflow的优秀人员的帮助下,我成功地构建了一个闪亮的web应用程序,这要感谢闪亮的服务器开发人员,他们让我选择要使用的数据集,并绘制一个漂亮的表格来显示完整的数据集。现在,我希望用户输入一个日期范围,然后通过按submit按钮仅显示该范围内数据的表格 提交请求时,将显示一条错误消息: DataTables警告表id='DataTables\u table\u 0':DataTables 警告:无法分析来自服务器的JSON数据。这是由于 JSON格式错误 我认为这不是一个错误。

在Stackoverflow的优秀人员的帮助下,我成功地构建了一个闪亮的web应用程序,这要感谢闪亮的服务器开发人员,他们让我选择要使用的数据集,并绘制一个漂亮的表格来显示完整的数据集。现在,我希望用户输入一个日期范围,然后通过按submit按钮仅显示该范围内数据的表格

提交请求时,将显示一条错误消息:

DataTables警告表id='DataTables\u table\u 0':DataTables 警告:无法分析来自服务器的JSON数据。这是由于 JSON格式错误

我认为这不是一个错误。我在谷歌上找到了一些关于JSON的信息,但它与 Javascript,我不知道如何管理它。我正在使用Firefox测试这个应用程序

请在这里找到我用于ui.R的代码

和服务器.R

谢谢你的帮助

编辑1

也在server.R中尝试了这段代码

  datos=reactive(function(){
    subset(datos2(),datos2()$date >= day1())
    subset(datos2(),datos2()$date <= day2())
  }) 
还有一些变化,比如

  datos=reactive(function(){
    subset(datos2(),date >= input$date1)
    subset(datos2(),date <= input$date2)
  })
没有成功。在这两种情况下,数据表都显示了整个数据集,它似乎在更改输入日期后运行,但子集设置不起作用

编辑2

自从ubuntu的一个链接被破坏后,数据重新上传。请检查数据的标题和格式,因为原始数据丢失,可能有一些更改


您可以在此处和上载的文件中找到数据,只有place2-daily.csv有效。place1 daily使用记事本进行了损坏的标题检查,而monthly没有子集要求的day列

因此,让我们修复文件名:

  datos2=reactive({
    #fn = filename()
    fn = "place2-daily.csv"
    f = read.csv(fn,header=T, sep=",",na.strings="-99.9")
    f$date = as.Date(f$date)
    f
  })
  datos=reactive({
    d1 <- as.Date(day1())
    d2 <- as.Date(day2())
    datos2a = datos2()
    with( datos2a , datos2a[ date >= d1 & date <= d2, ] )
  })

日期是作为一个因子读入的,因此必须首先转换它。在datos部分,我建议分配给一个局部变量。我的经验法则是,每当a被多次调用时,总是分配。

谢谢您的回答。我试试你的建议。是的,我在发送后注意到了每月的文件。在调用shiny之前,我需要预处理数据,并为所有数据集指定一个日期列。Hi@dieter menne Perfect,它运行良好,这正是我所需要的。你能在某个地方重新加载数据集吗?链接现在断开了,因为我找不到原始数据,它是一个子集,我重新创建了原始数据的一个子集。您应该检查并编辑标题和数据。希望它能起作用,它应该起作用。
  datos=reactive(function(){
    subset(datos2(),date >= input$date1)
    subset(datos2(),date <= input$date2)
  })
  datos2=reactive({
    #fn = filename()
    fn = "place2-daily.csv"
    f = read.csv(fn,header=T, sep=",",na.strings="-99.9")
    f$date = as.Date(f$date)
    f
  })
  datos=reactive({
    d1 <- as.Date(day1())
    d2 <- as.Date(day2())
    datos2a = datos2()
    with( datos2a , datos2a[ date >= d1 & date <= d2, ] )
  })