2017-09-11 14 views
0

長いRモデルがあります。これには、さまざまなデータセット間の多数のマージ操作とジョイン操作が含まれています。これは(による非一意の識別子に例えば、膨張したデータ・セット)すべてのエラーを引き起こさないことを確認してくださいできるようにするために、私は次のように私はコード化されたマージトラッカーを維持:データマージを追跡するためのログファイルの作成

merge <- "dat1+dat2=dat1" 
count <- nrow(dat1) 
check_t1 <- data.frame(merge, count) 
dat1 <- join(dat1, dat2, by = "id1", type = "left") 
count <- nrow(dat1) 
check_t2 <- data.frame(merge, count) 
checkmerge <- rbind(checkmerge, check_t1, check_t2) 

は、これはますます持っていますスクリプトの読みやすさとスピードが膨らんだ。だから、疑問があるかもしれません:(例えば、関数を介して)ソーチのログファイルを作成するためのより良い方法はありますか、あるいはこれを一般的にどのように扱いますか?

+2

オプスRの舞台を膨張させる場合は、[木こり](HTTPがありますエラーがスローされます://www.markvanderloo.eu/yaRb/2017/06/23/track-changes-in-data-with-the-lumberjack/) – hrbrmstr

答えて

1

stopifnotという条件を含むこのような関数を使用できます。それはあなたの参加は(ら)の新生パイプ構文&dplyrであなたのdata.frame

myfun <- function(df1, df2, id, jtype, msg) { 
       require(plyr) 
       print(msg) 
       M <- join(df1, df2, by = id, type = jtype) 
       stopifnot(nrow(df1)==nrow(M)) 
       return(M) 
     } 

library(plyr) 
myfun(mtcars, mtcars, "cyl", "left", "mtcars, mtcars") 

出力

[1] "mtcars, mtcars" 
Error: nrow(df1) == nrow(M) is not TRUE 
関連する問題