gpt4 book ai didi

r - 在 Shiny 中格式化 react 性 data.frames

转载 作者:行者123 更新时间:2023-12-04 05:51:22 25 4
gpt4 key购买 nike

我有一个 Shiny 的应用程序,但我正在更改它,以便输入数据是响应式(Reactive)的 - 它会在基础数据更新时更新。当它刚读入数据时它工作得很好,但是现在数据是 react 性的,我在处理其中一个文件时遇到了问题(另外两个按预期工作)。该文件是从数据库导出的 .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

和另一条线类似。这里发生了什么?我可以用 data.frame 做这些事情吗?这是从 reactiveFileInput 读取的?我尝试将底层 .csv 文件中的名称更改为下划线而不是空格,并尝试将 names()as.Date()reactive()表达,但这些没有区别。

谢谢

最佳答案

我在很大程度上回答我自己的问题是为了说我是一个 nincompoop。使用 reactiveFileReader() 读入文件后它变成了一个“ react 源”。如 Shiny 教程 here 中所述从外部修改 react 源 - 用户输入新值,或者在这种情况下,文件更新。您不能从 server.r 内部修改它.

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

从那里开始,我需要从数据中创建的任何新列都必须作为一个单独的对象使用这样的 react 函数来完成:

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

然后 NewThing()反过来可以随意使用。这就是您如何解决问题,例如其他数字列中的字符值。如果您尝试使用 colClasses="numeric" 将其引入你会得到一个错误和 read.csv()将失败。相反,首先将列导入为“字符”,然后使用 reactive({})as.numeric()将其分配给一个新对象。一定要注意新对象不能是 data.frame中的新列您使用 reactiveFileReader() 带来的, 而它必须是一个依赖于 data.frame 的新对象.

关于r - 在 Shiny 中格式化 react 性 data.frames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20201070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com