r - R Shiny 数据分析:我正在努力从我上传的 .csv 文件中渲染一个图
问题描述
我正在 R Shiny 中构建可靠性数据分析工具。我对 R 很陌生(几年前用过一次),对 Shiny 很陌生。我无法通过教程或论坛解决这个问题:(
基本上,我希望用户上传失败事件表的 .csv 文件。该表有四列(i、Xi、Ci 和 Ti)并且可以有任意数量的行。
首先,我想以表格形式显示数据。我模型的这一部分目前有效。
然后,我想绘制 Ti vs i 的图。我已经为它编写了代码(我尝试了很多次迭代,当前代码如下),但我没有尝试过任何工作。
稍后,我将想使用数据执行统计操作(从拉普拉斯趋势测试开始),我还不确定该怎么做(例如,我如何指定我在什么时候使用的列/行/数据项执行操作?)。
下面是当前的 R 代码(我已经删除了不相关的部分):
library(shiny)
library(ggplot2)
library(tidyverse)
ui <- fluidPage(
#App title
titlePanel("Reliability Data Analysis Tool"),
tabsetPanel(
tabPanel("Model selection", fluid = TRUE,
sidebarLayout(
sidebarPanel(
"Welcome to the RShiny Reliability Data Analysis tool.
To begin, please upload a valid events table file.", HTML('<br/>'),HTML('<br/>'),
#Allow user to input events table in .csv format
fileInput(
inputId = "fileEventsTable",
label = "Upload an events table",
accept = ".csv"),
#Indicate whether or not data includes headers
checkboxInput("header", "Header", TRUE),
),
mainPanel(
h4("Events table"),
h5("Key"),
"i = Observation number,",
"Xi = Interarrival time,",
"Ci = Failure indication,",
"Ti = Global time",
#Display events table
tableOutput("eventsTableContents"),
HTML('<br/>'),
h4("Cumulative failure plot"),
#Display cumulative failure plot
plotOutput("eventsTablePlot")
)))))
server <- function(input, output) {
#Read .csv file as a data frame
eventsdataframe<-reactive({
if (is.null(input$fileEventsTable))
return(NULL)
data<-read.csv2(input$fileEventsTable$datapath)
})
#Render table from events table data frame
output$eventsTableContents <- renderTable({
eventsdataframe()
})
#Render plot from events table data frame
output$eventsTablePlot <- renderPlot({
ggplot(data = eventsdataframe() +
geom_point(aes(x=eventsdataframe$Ti,y=eventsdataframe$i,size=10)))
})
}
shinyApp(ui = ui, server = server)
这是我在运行它并上传适当的 .csv 文件时得到的当前输出:
请注意错误:二进制运算符的非数字参数,我希望散点图在其中。
任何帮助/见解将不胜感激!
解决方案
我认为反应性数据框存在问题,因此我使用observeEvent
了反应性值,然后isolate
将其用于读取我使用过的数据,observeEvent
而不是使用它 进行了一些小的更改,并且应用程序运行良好。read.csv2
read.csv
你试试这个,我认为它符合你的目的。
library(shiny)
library(ggplot2)
library(tidyverse)
ui <- fluidPage(
#App title
titlePanel("Reliability Data Analysis Tool"),
tabsetPanel(
tabPanel("Model selection", fluid = TRUE,
sidebarLayout(
sidebarPanel(
"Welcome to the RShiny Reliability Data Analysis tool.
To begin, please upload a valid events table file.", HTML('<br/>'),HTML('<br/>'),
#Allow user to input events table in .csv format
fileInput(
inputId = "fileEventsTable",
label = "Upload an events table",
accept = ".csv"),
#Indicate whether or not data includes headers
checkboxInput("header", "Header", TRUE)),
mainPanel(
h4("Events table"),
h5("Key"),
"i = Observation number,",
"Xi = Interarrival time,",
"Ci = Failure indication,",
"Ti = Global time",
#Display events table
tableOutput("eventsTableContents"),
HTML('<br/>'),
h4("Cumulative failure plot"),
#Display cumulative failure plot
plotOutput("eventsTablePlot")
)))))
server <- function(input, output) {
#Read .csv file as a data frame
eventsdataframe<-reactive({
req(input$fileEventsTable)
data<-read.csv(input$fileEventsTable$datapath)
})
#df <- eventsdataframe()
#Render table from events table data frame
output$eventsTableContents <- renderTable({
eventsdataframe()
})
#Render plot from events table data frame
observeEvent(eventsdataframe(), {
req(eventsdataframe())
ddf <- isolate(eventsdataframe())
output$eventsTablePlot <-renderPlot({
ggplot(data =ddf, aes(x=ddf$Ti,y=ddf$i,size=10))+
geom_point()
})
})
}
shinyApp(ui = ui, server = server)
推荐阅读
- visual-studio - Visual Studio 中 C++ 项目的自定义调试器
- django - django 身份验证可以与水平缩放一起使用吗?
- node.js - 如何从子节点向主节点发送数据并得到响应
- android - 如何在 Android 中找到项目的确切 Y 位置和高度?
- c# - 在 asp.net 中调用 Web 服务
- java - Android 将 parcelable 放入 bundle 会引发类型不匹配
- c++ - 从因子列表中打印平方和 c++
- vue-router - 如何将 Vite Vue Router 4 捆绑到同一个块中
- css - 当我将 display-inline Block 添加到 li 项目时出现奇怪的动画故障
- linux - 使用 grep/find 从整个目录和子目录文件中查找字符串