【问题标题】:need finite 'xlim' values using reactive function in Shiny需要在 Shiny 中使用反应函数的有限“xlim”值
【发布时间】:2015-07-27 14:38:31
【问题描述】:

我正在尝试使用自定义文件输入构建一个线性回归 Shiny 应用程序。我对 Server.R 中的反应函数有疑问。反应函数 data 返回一个名为 qvdata 的数据框。当在 renderPlot 中调用 data() 并从 qvdata 绘图时,我收到以下错误: “plot.window(...) 中的错误:需要有限的 'xlim' 值”。当我不使用反应函数并在 renderPlot 中进行计算时,不会发生错误。为什么是这样?我希望以后能够在其他渲染函数中调用这个数据反应函数,以防止代码重复。

服务器.R

library(shiny)
shinyServer(function(input, output) {
data<-reactive({
    inFile <- input$file1

    if (is.null(inFile))
        return(NULL)
    #takes in data (In my case .dat file)
    qvdata=read.table(inFile$datapath)
    names(qvdata)=c("H","Q")
    qvdata$Hlog=log(qvdata[,1])
    qvdata$Qlog=log(qvdata[,2])
    xbar=mean(qvdata$Hlog)
    ybar=mean(qvdata$Qlog)
    xdif=qvdata$Hlog-xbar
    ydif=qvdata$Qlog-ybar
    Sxy=sum(xdif*ydif)
    Sxx=sum(xdif*xdif)
    #point estimates of alfa and beta
    qvdata$b=Sxy/Sxx
    qvdata$a=ybar-qvdata$b*xbar
    qvdata
})

output$contents <- renderPlot({
    qvdata=data()
    t=seq(0,2,0.01)
    abline=qvdata$a+qvdata$b*t
    plot(qvdata$Hlog,qvdata$Qlog,type="p",pch=20,col="red")
    lines(t,abline,col="black")
})
})

ui.R

library(shiny)

shinyUI(fluidPage(
    titlePanel('Linear regression'),
    sidebarLayout(
        sidebarPanel(
            fileInput('file1', 'Choose file')   
        ),
        mainPanel(
            plotOutput('contents')

        )
    )
))

【问题讨论】:

    标签: r shiny linear-regression


    【解决方案1】:

    转换为标准日期格式对我有用。

    使用as.POSIXct()

    【讨论】:

      【解决方案2】:

      您的 data 函数在您的闪亮应用启动时首次运行。因为缺少输入文件,它将返回NULL。但是您的绘图功能不会测试其输入,在这种情况下相当于plot(NULL)。如果您测试输入 !is.null() 它应该可以工作:

      output$contents <- renderPlot({
          qvdata=data()
          if (!is.null(qvdata)) {
            t=seq(0,2,0.01)
            abline=qvdata$a+qvdata$b*t
            plot(qvdata$Hlog,qvdata$Qlog,type="p",pch=20,col="red")
            lines(t,abline,col="black")
          }
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        • 1970-01-01
        • 1970-01-01
        • 2014-02-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多