基于R中动态用户输入的打印输出

基于R中动态用户输入的打印输出,r,shiny,R,Shiny,我对R shiny很陌生,因此无法从本网站上发布的类似问题中找出解决方案。我试图读取并使用用户提供给R的输入来生成输出 我试图创建一个简单的GUI,用户在其中选择一个人的名字(从下拉菜单),然后输入他/她的体重。如果高度高于某个阈值,则输出建议为“增重”,否则为“松重” 除了服务器.R文件中的以下错误外,所有操作似乎都正常工作: Error in `$.shinyoutput`(output, value_weight) : Reading objects from shinyoutput

我对R shiny很陌生,因此无法从本网站上发布的类似问题中找出解决方案。我试图读取并使用用户提供给R的输入来生成输出

我试图创建一个简单的GUI,用户在其中选择一个人的名字(从下拉菜单),然后输入他/她的体重。如果高度高于某个阈值,则输出建议为“增重”,否则为“松重”

除了服务器.R文件中的以下错误外,所有操作似乎都正常工作:

 Error in `$.shinyoutput`(output, value_weight) : 
 Reading objects from shinyoutput object not allowed
如何在if-then-else条件下读取和使用变量“value\u-weight”

Main.R

library(shiny)
runApp()
function(input, output) {

 # You can access the value of the widget with input$select, e.g.
 output$value_name   <- renderPrint({ input$select })
 output$value_weight <- renderPrint({ input$num })

 if(output$value_weight > 150)
 {
   output$value_recommendation <- "Loose Weight"
 }
 else{
   output$value_recommendation <- "Gain Weight"
 }

 }
 names_list <- list("Adam", "Jenna","Peter")

 fluidPage(
 selectInput("select", label = h3("Select Name"), choices = names_list, selected = 1),

 hr(),
 fluidRow(column(3, verbatimTextOutput("value_name"))),
 numericInput("num", label = h3("Enter Weight"), value = 0),

 hr(),
 fluidRow(column(3, verbatimTextOutput("value_weight"))),

 hr(),
 fluidRow(column(3, verbatimTextOutput("value_recommendation")))

   )
function(input, output) 
{

  output$value_market <- renderPrint({ input$select })
  output$value_demand <- renderPrint({ input$num })


  output$value_recommendation <- renderText({
  if(input$num > 150)
  {
    print("Loose Weight")
  }
  else{
    print("Gain Weight")
  }
  })
}
Server.R

library(shiny)
runApp()
function(input, output) {

 # You can access the value of the widget with input$select, e.g.
 output$value_name   <- renderPrint({ input$select })
 output$value_weight <- renderPrint({ input$num })

 if(output$value_weight > 150)
 {
   output$value_recommendation <- "Loose Weight"
 }
 else{
   output$value_recommendation <- "Gain Weight"
 }

 }
 names_list <- list("Adam", "Jenna","Peter")

 fluidPage(
 selectInput("select", label = h3("Select Name"), choices = names_list, selected = 1),

 hr(),
 fluidRow(column(3, verbatimTextOutput("value_name"))),
 numericInput("num", label = h3("Enter Weight"), value = 0),

 hr(),
 fluidRow(column(3, verbatimTextOutput("value_weight"))),

 hr(),
 fluidRow(column(3, verbatimTextOutput("value_recommendation")))

   )
function(input, output) 
{

  output$value_market <- renderPrint({ input$select })
  output$value_demand <- renderPrint({ input$num })


  output$value_recommendation <- renderText({
  if(input$num > 150)
  {
    print("Loose Weight")
  }
  else{
    print("Gain Weight")
  }
  })
}
功能(输入、输出){
#您可以使用输入$select访问小部件的值,例如。

使用“renderText”输出$value\u name解决了问题

Server.R

library(shiny)
runApp()
function(input, output) {

 # You can access the value of the widget with input$select, e.g.
 output$value_name   <- renderPrint({ input$select })
 output$value_weight <- renderPrint({ input$num })

 if(output$value_weight > 150)
 {
   output$value_recommendation <- "Loose Weight"
 }
 else{
   output$value_recommendation <- "Gain Weight"
 }

 }
 names_list <- list("Adam", "Jenna","Peter")

 fluidPage(
 selectInput("select", label = h3("Select Name"), choices = names_list, selected = 1),

 hr(),
 fluidRow(column(3, verbatimTextOutput("value_name"))),
 numericInput("num", label = h3("Enter Weight"), value = 0),

 hr(),
 fluidRow(column(3, verbatimTextOutput("value_weight"))),

 hr(),
 fluidRow(column(3, verbatimTextOutput("value_recommendation")))

   )
function(input, output) 
{

  output$value_market <- renderPrint({ input$select })
  output$value_demand <- renderPrint({ input$num })


  output$value_recommendation <- renderText({
  if(input$num > 150)
  {
    print("Loose Weight")
  }
  else{
    print("Gain Weight")
  }
  })
}
功能(输入、输出)
{

输出$value\u市场代码中的问题是行

if(output$value_weight > 150)
一般来说,
output
s是服务器中的只读对象,而
input
s是只读对象。如果将
output$value\u weight
替换为
input$num
,一切都应该正常。您还需要对输出使用呈现函数:在这种情况下,
renderPrint
renderText
(有关这两个渲染函数之间的差异,请参见文档)


哦!刚刚看到你自己解决了这个问题。希望我的回答能让你更深入地了解为什么会遇到这个特定的错误消息。