2017-09-11 78 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) 

這有越來越多誇大了腳本的可讀性和速度。所以可能會有疑問:是否有更好的方法來創建soch日誌文件(例如,通過函數),或者一般如何處理這些日誌文件?

+2

在新興管語法和dplyr(等人)OPS [R舞臺上,有[樵夫](HTTP ://www.markvanderloo.eu/yaRb/2017/06/23/track-changes-in-data-with-the-lumberjack/) – hrbrmstr

回答

1

您可以使用像這樣的函數,其中包含stopifnot條件。如果你加入它會拋出一個錯誤,您的充氣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