ここで何が起こっているのか理解していないと、以下のデータフレームを並べる両方の方法が同等であると思われます。サブセット化されたデータフレームを渡すときに、Rのorder()がNAsを生成するのはなぜですか?
当社のデータフレーム、今
cols <- c("chr","id","value")
df <- data.frame(c(1:5),c("ENSG1","ENSG2","ENSG3","ENSG4","ENSG5"),runif(5,5.0,10.0))
names(df) <- cols
df <- df[sample(nrow(df)),]
df
chr id value
5 ENSG5 8.913645
2 ENSG2 6.117744
4 ENSG4 8.558403
3 ENSG3 9.625546
1 ENSG1 6.105577
、方法1:
方法、のようにorder()
にDF列を渡しながら、いくつかの好奇心が強い理由のNAにスロー
df[order(df[,c("chr","id")]),]
chr id value
1 ENSG1 6.105577
2 ENSG2 6.117744
3 ENSG3 9.625546
4 ENSG4 8.558403
5 ENSG5 8.913645
NA <NA> NA
NA <NA> NA
NA <NA> NA
NA <NA> NA
NA <NA> NA
2:
df[order(df$chr,df$id),]
chr id value
1 ENSG1 6.105577
2 ENSG2 6.117744
3 ENSG3 9.625546
4 ENSG4 8.558403
5 ENSG5 8.913645
はそうではありません。
誰かが方法1と方法2を交換できない理由を説明できますか?
これは、 'order'が' df'を 'matrix'に強制してそれをソートしているからです。 'R'の行列は' dim'属性を持つベクトルだけなので、出力は最初の列の次に2番目の列の順序が続きます。だから、 'df'を指すものは長さ10のベクトルです。' df'だけで 'order'を実行し、その結果を見てください。 –
データフレームでは機能しないため、サブセット化されたデータフレームでは注文は機能しません。ベクトルで呼び出すときに機能します(ちょうどあなたのデータフレームの列である)。 – Gregor