2012-01-20 26 views
5

我使用R來計算一些基本的統計結果。我正在使用分位數()函數來計算數據幀列上的分位數,如下所示。如何從R中的指定數字向量檢索簡單的數值?

> quantile(foobars[,1]) 
    0%  25%  50%  75% 100% 
189000 194975 219500 239950 1000000 

我想能夠單獨訪問計算出的分位數。但是,我似乎無法找到如何做到這一點。當我檢查返回結果的類時,它是一個1維數字。

我嘗試這樣做:

> q <- quantile(foobars[,1]) 
> q[3] 
    50% 
219500 

這似乎是一個元組(分位數水平+號碼)。我只數(219500在這種情況下,有興趣的。

我如何可以訪問數量只有成一個簡單的(數字)變量?

回答

16

你混淆了數值的印刷表示。實際值就爲R而言,q包含名爲數值向量:

> dat <- rnorm(100) 
> q <- quantile(dat) 
> q 
     0%  25%  50%  75%  100% 
-2.2853903 -0.5327520 -0.1177865 0.5182007 2.4825565 
> str(q) 
Named num [1:5] -2.285 -0.533 -0.118 0.518 2.483 
- attr(*, "names")= chr [1:5] "0%" "25%" "50%" "75%" ... 

所有「命名爲」位的意思是,所述載體具有包含(在這種情況下)位數標籤附加屬性"names"。 R打印這些名稱矢量,因爲它們在打印輸出中被認爲是有幫助的(如果存在)。但是,它們絕不會改變這是一個數字向量的事實。您可以在計算中使用這些彷彿根本沒有"names"屬性:

> q[3] + 10 
    50% 
9.882214 

如果名稱打擾你的unname()函數存在將其刪除:

> q2 <- unname(q) 
> q2 
[1] -2.2853903 -0.5327520 -0.1177865 0.5182007 2.4825565 

爲了完整起見,我應該大概補充一點,你可以使用names()函數提取"names",該函數也有一個賦值版本('names<-'())。因此,從矢量中刪除名稱的另一種方法是將NULL指定爲名稱:

> q3 <- q 
> names(q3) 
[1] "0%" "25%" "50%" "75%" "100%" 
> names(q3) <- NULL 
> names(q3) 
NULL 
+1

'as.vector(q)'也將刪除名稱 – sam

相關問題