2012-07-25 35 views
0

我是一個新手,R和我有一個名爲PEDM用203行和19列的數據幀,我想編寫一個行刪除,然後在返回的0大多值列數據框(例如,98%的列是0)。刪除列具有一定的%0

我使用的數據幀輸出熱圖基於基因表達式返回的圖像,我想擺脫有異常並不真正有助於數據線。

我想象的代碼,我要找的線是相當簡單的,但我不能換我的頭周圍正確的方法來做到這一點。只是重申,尋找一條線,將主要從具有98%的0或2%非零的一個數據幀,無論怎樣更容易刪除列。

在此先感謝。

Vivek

回答

3

爲了清楚起見,我想在幾個步驟中做到這一點。首先定義一個檢查一個向量98點%的零和返回功能真或假:

to.drop <- apply(pedM, 2, myfun) 

最後放棄你不要欄」:

myfun <- function(x, threshhold=0.98) { 
    if(length(x[x==0])/length(x) > threshhold) { 
    TRUE 
    } else { 
    FALSE 
    } 
} 

然後使用apply創建的每個列的布爾向量不想:

pedM <- pedM[, !to.drop] 
+2

+1非常漂亮。你可以通過意識到你不需要'if'來縮短功能。不平等本身會產生一個合乎邏輯的價值。 – Andrie 2012-07-25 17:53:51

+0

@Andrie此話不假,但我想我會留在那裏清晰度。 – Justin 2012-07-25 18:03:15

+0

好了,現在對於「使它看起來像一個高斯證明」的較量:誰可以寫在字最少此操作? :-) – 2012-07-25 19:12:39