Ich analysiere Microarray-Daten aus einer öffentlich verfügbaren Datenbank, und meine Ausgabe ist eine Log-Ratio-Matrix, die experimentelle Daten mit Kontrollen vergleicht. Ich habe entdeckt, dass eine meiner Spalten mit NaN
Werten belegt ist, da diese Behandlung keine entsprechende Kontrolle hat. Meine Daten Rahmens (fc_initial
) Abmessungen 9049 x 647.Fehlerhafte logische Antwort von is.nan
> dim(fc_initial)
[1] 9049 647
die Spalte, die
von NaN wird der 580. Spalte gefüllt wirdhead(fc_initial[,580])
# [1] NaN NaN NaN NaN NaN NaN
summary(is.nan(fc_initial[,580]))
# Mode TRUE NA's
# logical 9049 0
Wenn ich versuche, diese apply
, R mit für alle Spalten zu untersuchen gibt falsch alle FALSE
für diese Spalte zurück.
fc_num <- apply(fc_initial, 2, is.nan)
summary(fc_num[ ,580])
# Mode FALSE NA's
# logical 9049 0
Ich habe visuell dies mit Blick sowohl bestätigt für fc_initial
und fc_num
, und ich habe überprüft, doppelt, dass ich für die rechte Spalte suchen which()
verwenden.
which(fc_num, arr.ind = TRUE)
# row col
which
lieferte keine als TRUE
zeigt Zellen.
Was fehlt mir? Warum gibt R eine Spalte von FALSE
für eine Spalte von Werten zurück, die ich visuell als TRUE
bestätigt habe?
Wenn 'fc_initial' ist in der Tat ein data.frame, können Sie davon profitieren, lesen _sehr sorgfältig_ den ersten Satz der Details Abschnitt von "anwenden" und dann darüber nachdenken, ob 'fc_initial' eine Mischung aus Zeichen/Faktor/numerische Spalten hat. (d. h. "sapply" und nicht "apply" beachten). – joran
Vielen Dank für Ihren Kommentar. Die erste Spalte des Datenrahmens ist eine Liste von Sonden als Zeichen, die das Verhalten hervorruft, auf das Sie hingewiesen haben. 'sapply' behebt das Problem und ich werde das für die Zukunft wissen. – scsuarez