2016-05-19 12 views
0

データフレーム内のすべての列の平均を計算しようとしていますが、引数が数値でも論理でもありません。 は、ここに私が使用しているコードです:私は完全に失われたと私は理解することはできませんShinyはデータフレーム内の列の平均を計算します

UI.R

library(shiny) 
library(shinydashboard) 
library(plyr) 
library(reshape2) 

#library(data.table) 

shinyUI(pageWithSidebar(
    headerPanel("CSV Viewer"), 
    sidebarPanel(
    fileInput('file1', 'Choose CSV File', 
       accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')) 


), 
    mainPanel(

    tableOutput('data'), 
    verbatimTextOutput('mean') 

) 
)) 

server.UI

shinyServer(function(input, output,session) { 

    output$data <- renderTable({ 
    inFile <- input$file1 

    if (is.null(inFile)) 
     return(NULL) 

    data<-data.frame(read.csv(inFile$datapath, header=FALSE, sep=";")) 

    }) 
    output$mean<-renderPrint({ 

    mean(data) 

    }) 
}) 

エラー。私を助けてください。ありがとう。

+2

私はあなたのコードを徹底的に調べていませんが、あなたは 'data.frame'オブジェクトの平均を取ろうとしています。 '?mean'を見ると、その関数はデータフレームに対してサポートされていないことが示されます。あなたが特定の列を意味するようにしたい場合は 'mean(data $ MY_COL)' –

+0

まだ動作しません..データフレームの平均を計算する他の方法はありますか? – Mouna

+1

データフレームの平均とはどういう意味ですか?データフレーム内のすべての値の平均値を求めますか?すべての列の平均が欲しいですか?すべての行?他に何か?あなたはカテゴリ変数で何をするつもりですか?日付?数値以外の他の値? – Gregor

答えて

1

あなたの主な問題は、mean()機能を使用することができないデータフレームの平均を取ろうとしているからです。このコードはうまくいくはずです(私はいくつかのサンプルデータを与えていないので注意してください - 私はそこに日付の列を投げ、関数はそれを意味しません)。

shinyServer(function(input, output,session) { 

    dataset <- reactive({ 
    #Change the below line 
    data.frame(a=c(1,2,3),b=c(2,4,5),c=as.Date(c("12/31/09","12/31/10","12/31/11"),"%m/%d/%y")) 

    }) 

    output$mean<-renderPrint({ 

    colMeans(dataset()[,which(sapply(dataset(), class) != "Date")]) 

    }) 
}) 

私はdataset()を呼び出してデータを参照できることに注意してください。これにより、期待される出力が得られます。 Date以外のデータセット内のすべての列のcolMeans関数も呼び出すことに注意してください。また、私のためにあなたのデータフレーム定義を置き換えることができるはずです。つまり、私のコードではrenderTable()呼び出しでdata.frame(a=c(1,2,3),b=c(2,4,5),c=as.Date(c("12/31/09","12/31/10","12/31/11"),"%m/%d/%y"))をあなたのコードに置き換えるだけです。

これが役に立ちます。

編集:以下のコメントパー、それはあなたがrenderTableコールでデータを定義し、renderPrintでそれを参照することができ判明します。 2つの主な問題は、read.csv()のデータの定義と、meanをデータフレームに呼び出す試みでした。後者の問題は、colMeans()で固定されており、前者は@Mounaから符号用いて固定した。dataset<-data.frame(read.csv(inFile$datapath, header = FALSE, sep = ";", dec = ","))

+0

あなたの説明のために@mikeyMikeに感謝します。でも、まだ動作しないのですが、まだcolMeans(dataset()[、which(sapplyあなたが作成したデータフレームであっても。 – Mouna

+0

残念ですが、いくつかのコードを変更するのを忘れました。今すぐ修正する必要があります、それが動作するかどうか教えてください –

+0

ありがとう私が持っていた問題はfile.csvにあったので、 'dataset <-data 'で' read.csv(inFile $ datapath、header = FALSE、sep = ";") 'を変更しなければなりませんでした。フレーム(read。csv(inFile $ datapath、header = FALSE、sep = ";"、dec = "、")) 'となります。 – Mouna

0

をあなたは「(。)colMeans」コマンドを使用して、データフレームの各列の平均値を算出することができます。これは、各要素がデータフレームの各列の平均であるベクトルを返します。

関連する問題