【问题标题】:Dynamically dropping files while reading using lapply使用 lapply 读取时动态删除文件
【发布时间】:2020-05-03 10:38:11
【问题描述】:

我有以下代码来读取多个文件并将它们分别附加到一个列表中以及文件名

foo <- function(fname){
fread(fname, skip = 5, header = TRUE, sep = " ") %>% 
mutate(fn = fname)
}

all <- lapply(files, FUN = foo)

读取文件后,我想在函数中插入一个条件,该条件检查文件中的某些属性失败,它将文件连同文件名一起删除。

与读取表格不严格相关,但也与其他文件相关

编辑:

我也使用here的以下有效方法:

all <- setNames(lapply(files, foo), files)

【问题讨论】:

  • 顺便说一句 - 对于 data.tables 使用 := 比使用 mutate[ 链接更好,而不是 %&gt;%
  • 请注意,如果您将名称分配给您的 files 向量,purrr::map_dfr 会与您当前的函数执行相同的操作。
  • @dww 因为这是 R,而不是 C,我建议将重点放在 values 而不是语句上,即 return(if (condition) x[, fn := fname] else NULL),然后删除完全不必要的return

标签: r function file lapply


【解决方案1】:

我使用过滤器尝试了以下相当简单的选项。 我在过滤器中使用了条件

all <- setNames(lapply(myFiles, function(x) {readLAS(x)}), myFiles)
all <- Filter(function(x) {area(x) >= 640}, all)

在运行 lapply 函数时不会,但它只使用了一行额外的代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    相关资源
    最近更新 更多