[英]R Shiny read csv file
如果可以,我还有另一个关于在使用Shiny时读取csv文件的问题。
我确实花了很多时间搜索和rtfm ...如果我错过了什么我的道歉。 大多数答案似乎有点过于花哨,在选择数据文件时会有用户交互。 我只是想让R Shiny在没有任何用户交互的情况下读取数据文件(只是一个)。
我有标准文件ui.R和server.RI将它们放在工作目录中。
我有一个带有数据的csv文件,我把它放在一个名为'data'的子目录中(基于这里的教程http://shiny.rstudio.com/tutorial/lesson5/ )
在R Studio中,我手动将工作目录设置为具有ui.R和server.R文件的目录。 我加载闪亮并执行runApp()。 server.R中的一行脚本尝试使用read.csv将数据读入对象'd.in'。
这不起作用,所以我尝试在读取csv文件之前强制执行工作目录,然后在读取数据之后和shinyServer代码之前重置它。
代码段:
wd.datapath = paste0(getwd(),"/data")
wd.init = getwd()
setwd(wd.datapath)
d.in = read.csv("shinyDataITB.csv", header = TRUE)
setwd(wd.init)
我收到一条错误消息:“错误:对象'd.in'未找到”
如果我在运行runApp之前手动加载csv数据文件,那么其他一切似乎都有效。 我不确定我是如何拙劣的,但欢迎任何帮助。
ui.R文件
##### ui.R #####
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Supply ITB"),
sidebarPanel(
radioButtons(inputId = "in.facnum",
label = "Choose Facility",
choices = levels(d.in$facnum))
), # end sidebarPanel
mainPanel(
h3("SPC chart"),
plotOutput("plotDisplay")
) # end mainPanel
)) # end Sidebar
和server.R文件
##### server.R #####
# load packages -------------------------------------------------------------
library(shiny)
library(qcc)
# load the data -------------------------------------------------------------
wd.datapath = paste0(getwd(),"/data")
wd.init = getwd()
setwd(wd.datapath)
#d.in = read.csv(file.choose(), header = TRUE)
d.in = read.csv("shinyDataITB.csv", header = TRUE)
setwd(wd.init)
# add proportions related to fill_lines -------------------------------------
d.in$whprop = d.in$wh / d.in$volume
d.in$dmprop = d.in$dm / d.in$volume
d.in$mmprop = d.in$mm / d.in$volume
# select SPC response variable (using proportions) --------------------------
qccvar = "whprop"
# shiny server body ---------------------------------------------------------
shinyServer(function(input,output) {
# Individuals (X) chart -----------------------------------------------------
output$plotDisplay <- renderPlot({
# select subset for specific facility
d.strata = subset(d.in, d.in$facnum == input$in.facnum) # subset
d.strata = d.strata[order(d.strata$year, d.strata$monthnum,
decreasing = FALSE),] # order by month
# create SPC chart
x.chart = qcc( d.strata[,qccvar], type = "xbar.one",
title = paste("Individuals chart\n", input$in.facnum, qccvar) )
}) # end renderPlot
}) # end shinyServer
### END CODE ###
我已将数据文件放在splashbox文件夹中的shinyDataITB.csv中
还可以通过以下方式在server.R中构建单选按钮:
output$ui <- renderUI({sidebarPanel(
radioButtons(inputId = "in.facnum",
label = "Choose Facility",
choices = levels(d.in$facnum))
), # end sidebarPanel
并在ui.R通过:
uiOutput("ui")),
你的问题出在ui.R
。 您有对d.in$facnum
的引用,但d.in
中不存在d.in
它只存在于server.R
。 变量不会在这两个实例之间共享。 服务器和UI需要通过输入和输出参数进行通信。
如果要从服务器上的数据设置单选按钮的选项值,可以使用updateRadioButtons
。 首先,确保在shinyServer
函数中包含session
参数。
shinyServer(function(input,output, session) {
...
updateRadioButtons(session, "in.facnum", choices=levels(d.in$facnum))
...
}
然后,这将设置该输入中的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.