私はEntrez ID(整数ベクトル)の複数のベクトルをReduce(交差、...)を使って比較しようとします。ベクトルは「DISTINCT」を使用してデータベースから選択され、単一ベクトルに重複が含まれないようにします。私はベクトルとファクターに対する交差の動作が異なります
length(Reduce(intersect,list(c(l1$entrez),c(l2$entrez),c(l3$entrez),c(l4$entrez))))
又は
length(Reduce(intersect,list(c(factor(l1$entrez)),c(factor(l2$entrez)),c(factor(l3$entrez)),c(factor(l4$entrez)))))
で複数のベクトルを比較すると
length(factor(c(l1$entrez)))
は
length(c(l1$entrez))
同じ長さ(同じIDをW/Oの長さの関数)を与えます
結果は同じではありません。私はその要因を知っています!= originalVectorしかし、最初の要因/ベクトルの長さとレベルは同じですが、なぜ結果が異なるのか理解できません。
誰かがvectorやfactorのintersect関数の異なる動作を説明できますか? 2つの要素リストの交点が再び要因リストであり、重複が異なる方法で扱われるのでしょうか?
編集 - 例:
> head(l1)
entrez
1 1
2 503538
3 29974
4 87769
5 2
6 144568
> head(l2)
entrez
1 1743
2 1188
3 8915
4 7412
5 51082
6 5538
リストは、約500のEntrez IDが20Kに含まれています。したがって、ベクトルは純粋な整数を含み、テストされたすべてのベクトルの間に交点を与える必要があります。
> length(Reduce(intersect,list(c(factor(l1$entrez)),c(factor(l2$entrez)),c(factor(l3$entrez)),c(factor(l4$entrez)))))
[1] 514
> length(Reduce(intersect,list(c(l1$entrez),c(l2$entrez),c(l3$entrez),c(l4$entrez))))
[1] 338
> length(Reduce(intersect,list(l1$entrez,l2$entrez,l3$entrez,l4$entrez)))
[1] 494
私は深刻なことに謝罪しなければなりません。交差関数の異なる挙動は、データの問題によって引き起こされる可能性があります。コンマ区切りのEntrez ID(22038,23207、...)を含むデータセットのフィールドが見つかりました。私はデータをより詳細に見ていたはずです。答えと時間をありがとう。私はまだ異なる結果を理解していませんが、これが異なる行動の原因であると確信しています。誰かがそれを確認できますか?
他の人に話すことはできませんが、再現可能な例は大いに役立ちます。 –
コメントをいただきありがとうございます:比較しようとしているリストの例: –
IDは因子か整数変数ですか?データベースからインポートした場合、そのデータベースはIDとして文字を格納します(数値演算が意味する変数ではないので妥当です)。 –