创建日志文件以跟踪数据合并

时间:2017-09-11 12:15:00

标签: r

我有一个很长的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日志文件(例如,通过一个函数),或者你如何处理这个?

1 个答案:

答案 0 :(得分: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