【问题标题】:Shiny R - Creating a new data.frame for a modelShiny R - 为模型创建一个新的 data.frame
【发布时间】:2016-09-01 21:38:52
【问题描述】:

我对 R 很陌生,对 Shiny 甚至更陌生。 我有一个 R 脚本,现在我想将其转换为 Shiny,但我总是失败。

我有一个包含变量 Wanddicke、T1、T2、T2star、ADC、Vivo 的数据集,它保存在“Basisdaten.csv”中。此外,还有一个变量 DSS 定义了结果(0 或 1)。 我希望加载此文件,并应使用此数据集训练 GLM 模型以预测“DSS”。 然后我想让用户有机会为 Wanddicke、T1、T2、T2star、ADC、Vivo 输入自己的参数,并且我希望 Shiny 返回预测。

这是我到目前为止所拥有的,但由于我不明白的原因,它不会运行。有人能告诉我我的错误在哪里吗?我怀疑在生成新的data.frame“mydatanew”期间会出现问题。提前非常感谢。

UI.R

 library(shiny)
shinyUI(fluidPage(

  # Application title
  titlePanel("Colitis Evaluator"),

  # Sidebar  
  sidebarLayout(
    sidebarPanel(
       numericInput("Dicke",
                   "Wanddicke in mm:",
                   ""),
       numericInput("T1",
                    "T1 in ms:",
                    ""),
       numericInput("T2",
                    "T2 in ms:",
                    ""),
       numericInput("T2star",
                    "T2* in ms:",
                    ""),
       numericInput("ADC",
                    "ADC in 10^-6 mm^2/s",
                    ""),
       numericInput("Vivo",
                    "In Vivo als 1",
                    ""),

       #  selectInput("Vivo", "In vivo/Ex vivo:", 
       #               choices = c("In vivo" = 1, "Ex vivo" = 0))

    submitButton("Submit")

    ),


    mainPanel(

      textOutput("Score")


    )
  )
))

Server.R

library(shiny)

Basisdaten <- read.table("Basisdaten.csv", header=TRUE, sep=";", na.strings="NA", dec=".", strip.white=TRUE)
model.glm <- glm(formula=DSS==1 ~ Wanddicke + T1 + T2 + T2star + ADC + Vivo + (Wanddicke+T1+T2+T2star+ADC+Vivo)^3,family=binomial(),data=Basisdaten,na.action=na.omit)



shinyServer(function(input, output) {



     mydatanew <- data.frame(Wanddicke=input$Dicke,T1=input$T1,T2=input$T2,T2star=input$T2star,ADC=input$ADC,Vivo=input$Vivo)
     mydatanew$Score <- predict(model.glm, newdata=mydatanew, type="response")
     output$Score <- renderText(mydatanew$Score)


})

【问题讨论】:

  • 对于numericInput,默认值应该是数字而不是空字符串。
  • 什么情况下不运行?你有错误吗?

标签: r shiny


【解决方案1】:

以下代码应该可以工作。
由于 csv 文件非常差,我添加了一些采样...

您可能已经在控制台中看到了一些关于在没有主动反应上下文的情况下不允许操作的抱怨。
你可能会觉得这很有趣:http://shiny.rstudio.com/articles/reactivity-overview.html

csv

Wanddicke,T1,T2,T2star,ADC,Vivo,DSS
10,2,3,4,5,6,0
20,4,6,8,10,12,1

服务器.R

library(shiny)

Basisdaten <- read.table("Basisdaten.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
model.glm <- glm(formula=DSS==1 ~ Wanddicke + T1 + T2 + T2star + ADC + Vivo + (Wanddicke+T1+T2+T2star+ADC+Vivo)^3,family=binomial(),data=Basisdaten,na.action=na.omit)



shinyServer(function(input, output) {

  output$Score <- renderText({

    mydatanew <- data.frame(Wanddicke=input$Dicke,T1=input$T1,T2=input$T2,T2star=input$T2star,ADC=input$ADC,Vivo=input$Vivo)
    mydatanew$Score <- predict(model.glm, newdata=mydatanew, type="response")
    mydatanew$Score + sample(1:100, 1)
    })
})

ui.R

library(shiny)
shinyUI(fluidPage(

  # Application title
  titlePanel("Colitis Evaluator"),

  # Sidebar  
  sidebarLayout(
    sidebarPanel(
      numericInput("Dicke",
                   "Wanddicke in mm:",
                   10),
      numericInput("T1",
                   "T1 in ms:",
                   1),
      numericInput("T2",
                   "T2 in ms:",
                   2),
      numericInput("T2star",
                   "T2* in ms:",
                   3),
      numericInput("ADC",
                   "ADC in 10^-6 mm^2/s",
                   4),
      numericInput("Vivo",
                   "In Vivo als 1",
                   0),

      #  selectInput("Vivo", "In vivo/Ex vivo:", 
      #               choices = c("In vivo" = 1, "Ex vivo" = 0))

      submitButton("Submit")

    ),


    mainPanel(

      textOutput("Score")


    )
  )
))

【讨论】:

  • 亲爱的,非常感谢您的即时答复和亲切的 cmets。不幸的是,即使有 tokiloutok 的修改,它也不会工作。单击“运行”时,我只看到用户界面弹出不到一秒钟,但在我可以做任何事情之前它再次关闭。没有错误消息。
  • 你的 csv 文件和闪亮的文件在同一个文件夹中吗?你能用普通的 R (oustide shiny) 执行你的代码吗?您在控制台中看到任何错误吗?
  • 我明白了...这是由于 Basisdaten
猜你喜欢
  • 1970-01-01
  • 2013-10-14
  • 2016-01-02
  • 1970-01-01
  • 2020-09-25
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多