2016-01-27 3 views
-1

Я только начал использовать блестящие и есть первая проблема, когда я запускаю этот код:R Shiny нечисловой аргумент

Блестящая Server.R

library(shiny) 

shinyServer(
function(input, output){ 


asset <- reactive(input$asset) 
weight1 <- 0.3 
weight2 <- 1-weight1 

sum1 <- asset*weight1 

Блестящая UI.R:

library(shiny) 

shinyUI(fluidPage(

titlePanel(title = "Programm"), 
sidebarLayout(
sidebarPanel(("Asset 1:"), 
      numericInput("asset:", "asset1:", 0, min=0, max=1000000)), 
mainPanel(("xyz"), 



     ) 

    ) 

)) 

Ошибка говорит: нечисловой аргумент двоичному оператору. Есть ли возможность получить числовые значения из реактивной функции? Благодарим за помощь!

+1

Возможно, из-за ваши переменные существо с именем 'sum', которая является функцией базовой R. Вам следует избегать этого вообще. – nrussell

+0

Зависит от того, какой тип ui предоставляет вход. Возможно, вы захотите обернуть 'input $ sum' в as.numeric() –

+0

Это не была сумма. Я использовал числовой ввод. Что вы имеете в виду с as.numeric? – Florian

ответ

0

Боковое примечание: ваш код, к сожалению, не воспроизводится. Более эффективный код, скорее всего, даст вам ответ

Проблема в том, что asset является реактивным объектом. Следовательно, вы не можете размножить его в строке sum1 <- asset*weight1. Это должно быть вместо

sum1 <- reactive({asset()*weight1}) 

Общий код может выглядеть

shiny::shinyApp(shinyUI(fluidPage(

    titlePanel(title = "Programm"), 
    sidebarLayout(
     sidebarPanel(numericInput("asset", "asset1:", 0, min=0, max=1000000)), 
     mainPanel( textOutput("text1")) 

    ) 

)), 
    shinyServer(
    function(input, output){ 
     asset <- reactive(input$asset) 
     weight1 <- 0.3 
     weight2 <- 1-weight1 
     output$text1 <- reactive({asset()*weight1}) 
    })) 
Смежные вопросы