私はかなり大きなdata.table(500 x 2000)を持っています。その列が重複しているかどうか、つまりすべての行に同じ値があるかどうかを調べる必要があります。 data.table構造体内でこれを効率的に行う方法はありますか?data.tableで重複する列を見つける
私は、列の各ペアに対してall(col1 == col2)
という単純な2ループアプローチを試みましたが、時間がかかりすぎます。私はdata.frameに変換して上記の方法を使ってみましたが、まだかなり時間がかかります。
私の現在のソリューションは、行列にdata.tableを変換してapply()
機能を使用することです。しかし、アプローチは、すべての要素のモードが同じになるように強制的に、と私は思い
similarity.matrix <- apply(m, 2, function(x) colSums(x == m)))/nrow(m)
むしろそれが起こることはありません。その他の選択肢は何ですか?ここで
はdata.table用のサンプル構造である:
m = matrix(sample(1:10, size=1000000, replace=TRUE), nrow=500, ncol=2000)
DF = as.data.frame(m)
DT = as.data.table(m)
結果に偽陽性を受け入れるかどうかは、重複列を手動でチェックするかどうかです。私は列ごとに1つのハッシュを計算し、同じハッシュ値が可能な重複を示すと想像することができます。 –
なぜ 'duplicated()'を使わないのですか? – Haboryme
チップをありがとう! duplicated()は不思議に作用します。私の厄介なアプローチよりもはるかに高速です。 – Naumz