2016-01-02 15 views
1

我有一個matrix 8列。對於每一行我想繪製一個單一的盒子圖。我更喜歡箱式情節在一個情節。因此,下面的例子應該產生4個盒形圖(每個8個值) - 全部在單個圖像中。如何boxplot R中的行方向矩陣?

數據例如:

> data[2:5,] 
    [,1] [,2] [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  
[1,] 0.6 0.5 0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
[2,] 0.5 0.5 0.5357143 2.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
[3,] 0.5 0.7 0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
[4,] 0.5 0.5 1.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185 

到目前爲止,我已經試過:

> boxplot(data[2:5,]) 
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
    'x' must be atomic 

,並從this SO post這種方法:

> boxplot(as.list(as.data.frame(data[2:5,]))) 
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
    'x' must be atomic 

我一直在掙扎了好半天。你能給我提示嗎?

EDIT1:

> dput(data[2:5,]) 
structure(list(0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.535714285714286, 
    0.535714285714286, 0.535714285714286, 0.535714285714286, 
    0.535714285714286, 0.535714285714286, 0.535714285714286, 
    0.535714285714286, 0.535714285714286, 0.535714285714286, 
    0.535714285714286, 0.535714285714286, 0.535714285714286, 
    0.535714285714286, 0.535714285714286, 0.535714285714286, 
    0.535714285714286, 0.535714285714286, 0.535714285714286, 
    0.535714285714286, 0.518518518518518, 0.518518518518518, 
    0.518518518518518, 0.518518518518518), .Dim = c(4L, 8L)) 
+1

您可能需要從'dput(data [2:5,])'發佈輸出,因爲boxplot函數_應該能夠毫無困難地處理矩陣對象。 –

+0

@ 42-請看看我上面的編輯(數據略有不同,但結構仍然相同) – petrbel

+2

啊。你有一個列表而不是矩陣。 –

回答

6

要繪製箱線圖走出矩陣,我們可以使用boxplot.matrix功能:

boxplot.matrix(data, use.cols = FALSE) 
+0

或'boxplot(t(data))',我相信。 +1。 – A5C1D2H2I1M1N2O1R2T1

+0

這兩種解決方案都不起作用: - /它失敗並出現相同的錯誤。這真的很奇怪。 – petrbel

4

我認爲你需要使用T()函數來轉置矩陣,因爲R通常在列基礎上進行矩陣運算:

nums<-scan(text=" 0.6 0.5 0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
0.5 0.5 0.5357143 2.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
0.5 0.7 0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
0.5 0.5 1.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185") 
Read 32 items 

mat<- matrix(nums, nrow=4,byrow=TRUE) 
mat 
    [,1] [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8] 
[1,] 0.6 0.5 0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
[2,] 0.5 0.5 0.5357143 2.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
[3,] 0.5 0.7 0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
[4,] 0.5 0.5 1.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185 
> boxplot(mat) # Not correct 
> boxplot(t(mat)) 

enter image description here

編輯完成後,我們現在可以看到data -object是一個很奇怪的對象。它是一個具有維度屬性的列表,因此它被打印爲矩陣,但傳遞給其他函數時不能正確運行。

+0

我不明白 - 它仍然失敗,數據上出現同樣的錯誤。你不知道爲什麼要嗎? – petrbel