我正在分析來自公開數據庫的微陣列數據,我的輸出是將實驗數據與控件進行比較的對數比矩陣。我發現我的其中一列填充了NaN
值,因爲這種治療方法沒有相應的控制。我的數據幀的(fc_initial
)尺寸爲9049 X 647從is.nan返回不正確的邏輯
> dim(fc_initial)
[1] 9049 647
由NaN的填充柱的第580列
head(fc_initial[,580])
# [1] NaN NaN NaN NaN NaN NaN
summary(is.nan(fc_initial[,580]))
# Mode TRUE NA's
# logical 9049 0
當我試圖研究這個使用apply
,R中的所有列不正確地返回此列的所有FALSE
。
fc_num <- apply(fc_initial, 2, is.nan)
summary(fc_num[ ,580])
# Mode FALSE NA's
# logical 9049 0
我已經在視覺上證實了這一觀點用兩種fc_initial
和fc_num
,和我有雙重檢查,我正在尋找使用which()
右側立柱。
which(fc_num, arr.ind = TRUE)
# row col
which
返回任何細胞表示作爲TRUE
。
我錯過了什麼?爲什麼R將一列值爲FALSE
的列返回給我已經被視覺確認爲TRUE
的一列值?
如果'fc_initial'是實際上是一個data.frame,你可能會從閱讀_very仔細閱讀''apply'的Details部分的第一句,然後考慮'fc_initial'是否混合了字符/因子/數字列,可以從中受益。 (即考慮'sapply'而不是'apply')。 – joran
非常感謝您的評論。數據框的第一列是探測器列表作爲字符,這會導致您指出的行爲。 'sapply'修復了這個問題,我將在未來知道這一點。 – scsuarez