2015-10-20 47 views
0

我是一個R noob,所以我知道這可能有一個簡單的解決方案,但我無法弄清楚。我試圖讀取由空格分隔的數據。有5列1000行。我想獲取每行的平均值和中位數,然後根據平均值和中值計算均方誤差和偏差。考慮一行數據幀

我很努力地採取個別行的意思,我不知道我做錯了什麼。

我的數據是這樣的:

X1     X2    X3    X4   X5 

-2.3564870e-02 -3.3810429e-01 -3.0566635e+00 -1.1046286e-02 -3.0032159e-01 

    vals <- read.table("laplace_samples.dat") 
    rowMeans(vals) 

我總是得到錯誤:

Error in rowMeans(vals) : 'x' must be numeric

我寧願做一個循環,並期待在單獨的手段,但我不能弄清楚如何做到這一點。我試過什麼:

for(i in 2:1001){ 
     row = vals[i,1:5] 
     mn = mean(row) 
     med = median(row) 
     ..... other code 
    } 

此外,有沒有我的方式,我可以把它轉換成一個矩陣,所以我可以索引vals[colnumber][rownumber]或類似的東西?

+0

直到你已經習慣了R請始終

vals <- read.table("laplace_samples.dat", header = TRUE) rowMeans(vals) 

如果上面的代碼不能正常工作的嘗試看看你在...... head(vals)和/或str(head(vals))中讀到的內容......並且提示:在你的read.table中試試「header = TRUE」 –

回答

1

這個問題應該在StackOverFlow上遷移。然而...

看起來你有一個字符第一排X1 X2 X3 X4 X5。 使用:如果你想vals是一個矩陣型

vals <- read.table("laplace_samples.dat") 
vals <- as.numeric(vals) 
rowMeans(vals) 

vals <- as.matrix(vals) 
+0

你可以隨時國旗遷移...但你幾乎可以保證它將立即關閉(它不可重現);並預計該國旗可能不會被採取行動。 –

+0

由於'as.numeric()'不能直接在列表/數據框上使用''read.table()''''後不能'as.numeric(vals)'。檢查'as.numeric(mtcars)' –

+0

非常感謝!我被困太久了! – beth