質問: ``` これは大丈夫です。 しかし、 `merge` では、これらのデータフレームを一般的な列でソートして、CPU /メモリをかなり重いものにすることはできません。しかし、このマージはO(n) 並べ替えられたデータセットを効率的にマージする方法がRにあるかどうか疑問に思っていますか?
回答: 共通キー/インデックスのセットが完全に重複している場合、それは... `Reduce(`&`, user$user.id %in% some.data$user.id)` ...はTRUEを返し、あなたが言ったように、**キーの重複はありません**で、マージの問題はdata.frameに列を追加することになります。一緒にラインの何か... ``` library(log4r) t1 <- system.time(z <- merge(user, some.data, by='user.id')) info(my.logger, paste('Elapsed time with merge():', t1['elapsed'])) t2 <- Sys.time() r <- data.frame(user.id=user$user.id, V1.x=user$V1, V2.x=user$V2) r[,names(some.data)] <- some.data[,names(some.data) t3 <- Sys.time() info(my.logger, paste('Elapsed time without:', t3-t2)) ``` 上記の仮定が成り立たない場合は、両方のキーセット、変換関数、NAパディングの組み合わせが少し複雑になりますが、併合して重複する仮定だけでは、先に進むことができます。 また、system.time()を呼び出すmerge()のタイミングとは異なり、Sys.time()が2回呼び出されるため、秒のアプローチのタイミングは偏っていることにも注意してください。 (S.O.マークアップの私の不用意な使用を許してください)