2017-10-29 6 views
0

Rを初めて使うことはおかげさまです。私はこの問題をしばらく解決しようとしましたが、それを理解することはできませんでしたが、解決するのは簡単です。ShinyIncubator:matrixinputを使った線形回帰

統計解析(例:線形回帰)を行い、ユーザーがmatrixInputを使用してデータを入力できるようにしたいとします。

library(shiny) 
library(shinyIncubat) 

df <- data.frame(matrix(c("0","0"), 1, 2)) 
colnames(df) <- c("x", "y") 

ui <- pageWithSidebar(
    headerPanel('Enter data (x,y) here'), 
    sidebarPanel(
    matrixInput('foo', 'Foo', data=df) 
), 
    mainPanel(
    verbatimTextOutput(outputId = "linreg") 
) 
)) 

    server <- function(input,output) { 

    lm1 <- reactive({lm(y~x,data=input$foo)}) 
    output$linreg <- renderPrint({summary(lm1())}) 

} 

shinyApp(ui = ui, server = server) 

が、私はエラーを取得する:「データ」data.frame、ない行列やステファン・ローランが言ったように、あなたがデータフレームにユーザ入力を変換する必要が

+0

- 反応性({LM(Y〜X、データ= as.data.frame(入力$ fooという))})' –

答えて

0

配列でなければなりません。明らかに、matrixInputはあなたのcolnamesの名前を変更するので、後で新しいデータフレームの列の名前を変更する必要があります。そうしないと、回帰は失敗します。

あなたは `LM1 <試みることができる
library(shiny) 
library(shinyIncubator) 

df <- data.frame(matrix(c("0","0"), 1, 2)) 
colnames(df) <- c("x", "y") # you don't need this 

ui <- pageWithSidebar(
    headerPanel('Enter data (x,y) here'), 
    sidebarPanel(
    matrixInput('foo', 'Foo', data=df) 
), 
    mainPanel(
    verbatimTextOutput(outputId = "linreg") 
) 
) 

    server <- function(input,output) { 

    lm1 <- reactive({ 

    lmdata<-as.data.frame(input$foo) 
    names(lmdata)[1]<-'y' 
    names(lmdata)[2]<-'x' 

    reg<-summary(lm(y~x,data=lmdata)) 
    reg 
    }) 

    output$linreg <- renderPrint({lm1()}) 
    # output$linreg <- renderPrint({print(input$foo)}) this way you can check how the userInput looks like 

} 

shinyApp(ui = ui, server = server) 
+0

を助けるために時間を割いてどうもありがとうございます初心者! S.あなたのコードに ')'がありません: '#output $ linreg < - renderPrint({print(input $ foo)})' これまで誰でもそれをコピーしようとします。 –

+0

そうです、上記のコードを編集しました。 – laurenzo

+0

'名前(lmdata)'と 'input $ foo'を組み合わせる方法はありますか?私は 'inputData < - reactive({as.data.frame(input $ foo(names(input $ foo)[1] < - 'y'、名前(入力$ foo)[2] < - x '))}) 'しかし、あなたが見るかもしれないように私は正しい構文を知らないし、私はどのようにそれが行われるか把握することができたドキュメントを見つけることはありません。 –