设置反应性数据的格式。闪亮中的帧 [英] Formatting reactive data.frames in Shiny

查看:9
本文介绍了设置反应性数据的格式。闪亮中的帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个运行良好的闪亮应用程序,但我正在更改它,以便输入数据是反应性的-它将在底层数据更新时更新。当它只是读入数据时,它工作得很好,但是现在数据是反应性的,我遇到了一个文件的问题(另外两个文件的工作与预期完全一样)。该文件是从数据库导出的.csv文件,我想在使用之前做一些内务处理-更改一些名称并格式化一些数据。相关部分为:

server.r

 W.Data<-reactiveFileReader(2000,session,
          "WaterData.csv",read.csv,header=TRUE,as.is=TRUE)

这样可以很好地工作,但是接下来的两行就不能工作了:

names(W.Data())[names(W.Data())=="Visit_Start_Date"]<-"Visit.Date" 
W.Data()$Visit.Date<-as.Date(W.Data()$Visit.Date,"%m/%d/%Y")   

当我运行此命令时,我收到

Error in W.Data()$VisitDate <- as.Date(W.Data()$VisitDate, "%m/%d/%Y"):
invalid (NULL) left side of assignment

和另一行类似。这里发生什么事情?我可以使用从reactiveFileInput读取的data.frame来做这些事情吗?我尝试将基础.csv文件中的名称更改为带有下划线而不是空格,并尝试将names()as.Date()放在reactive()表达式中,但这些都没有影响。

谢谢

推荐答案

我回答自己的问题主要是说我是个笨蛋。使用reactiveFileReader()读入文件后,它将成为"反应源"。如SHILY教程here中所述,反应源是从外部修改的-用户输入新值,或者在本例中是文件的更新。您不能从server.r内部修改它。

因此,在我的示例中,我使用了read.csv()中的col.namescolClasses选项来尽可能以最佳格式获取原始数据。我还使用了非常有用的setAs函数来让read.csv了解如何格式化日期,如下所述:Specify date format for colClasses argument ...

从那里开始,我需要从数据创建的任何新列都必须使用如下所示的反应函数作为单独的对象来完成:

NewThing<-reactive({ function(MyReacitveCSVdata()$colname) })

,然后NewThing()可以随心所欲地使用。这就是解决其他数值列中的字符值等问题的方法。如果您尝试仅使用colClasses="numeric"引入它,则会收到错误,read.csv()将失败。相反,首先将列作为"CHARACTER"导入,然后使用reactive({})as.numeric()将其分配给新对象。请务必注意,新对象不能是您使用reactiveFileReader()引入的data.frame中的新列,而必须是依赖于该data.frame的新对象。

这篇关于设置反应性数据的格式。闪亮中的帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆