如何检查文件夹中的现有文件以避免覆盖?

时间:2017-02-05 12:48:55

标签: r dataframe overwrite

我在列表中有dataframe,需要相对于阈值进行过滤,然后将它们导出为csv。是的,我编写了一个简单的函数来实现这一点,但效率不高(我的意思是效率不高,因为我还必须检查导出的文件是否存在),所以我必须避免覆盖文件。但是,在我的以下实现中,我想检查文件夹,如果已经导出了相同的文件,则会引发错误。如何查看文件夹中现有文件的模式?如何避免将文件覆盖到同一文件夹中?任何人都可以指出我如何完成这项工作?有什么想法改进我目前的实施?

迷你示例:

surfList <- list(
    heck = data.frame( L1=seq(1, by=6, len=20), L2=seq(4, by=6, len=20), score=sample(30, 20)),
    kev = data.frame( L1=seq(3, by=9, len=15), L2=seq(6, by=9, len=15), score=sample(28, 15)),
    leo = data.frame( L1=seq(6, by=8, len=18), L2=seq(11, by=8, len=18), score=sample(22, 18))
)

这是我的实施:

splitter <- function(inputlist,
                        threshold = 14,
                        tab ="noise",
                        dest.dir = tempdir(),
                        overwrite=FALSE) {
    if(!dir.exists(dest.dir)) {
        dir.create(file.path(dest.dir))
        setwd(file.path(dest.dir))
    }
    if (overwrite) {
        for(i in seq_along(inputlist)) {
            w <- inputlist[[i]]
            nm <- names(inputlist)[i]
            drop <- w[w$score >= threshold]
            write.csv(drop, sprintf("%s/%s.%s.csv", dest.dir, nm, tab))
        }
    } else {
        # I want to check dest.dir whether previous exported files exist or not
        stop(paste("prevent overwriting files; please delete existing file:", dest.dir))
    }
}

在此实现中,缺少检查文件夹中已导出的文件。如何使我的实施更加高效和简洁?任何的想法?在此先感谢:)

修改

让我们想象~/中已存在csv文件列表,但我不知道这些文件已经导出。我假设我忘记了我的第一步,所以我想检查文件夹。我怎样才能做到这一点?如何避免将相同的文件覆盖到文件夹中?任何想法都基于我的实现?

有人为此给出了答案,但这并不符合我的期望。还有什么好主意吗?非常感谢:))

0 个答案:

没有答案