沿列表排序,从文件夹中读取文件并应用给定的功能

时间:2018-02-11 15:06:33

标签: r tidyverse

我需要帮助来修改我的代码以执行以下任务...到目前为止,我已经使用了以下问题和答案的帮助

以下是我希望能够对我的代码做的事情......

  1. 我需要从文件夹中读取几个文件
  2. 我想使用文件夹中每个文件的名称来添加列。我只能用'mutate'来做这个,但是对于一个文件
  3. 我想分别保存每个文件的结果,并且还要合并到一个文件
  4. 我还希望将用于读取文件的代码与函数分开,以便我可以应用于其他项目。
  5. 我试图避免使用'loop'语句
  6. 以下是我的不完整代码的示例,它提供了错误

    library(tidyverse)
    library(readr)
    cleaningdata<- function(data){
      data$Label<-gsub(".tif", "", data$Label)
      data %>% select(Label:Solidity) %>%group_by(Label)%>%
        mutate(view = seq_along(Label), Station="T1-1")%>%
        rename(Species = Label)%>%
        mutate(view = recode(view, "1" = "a","2" = "b","3" = "c"))
    }
    
    filenames <- list.files("Data", pattern="*.txt", full.names=TRUE)
    ldf <- lapply(filenames, read.txt)
    res <- lapply(ldf, cleaningdata)
    

    以下是我的数据集Data Folder的示例,以下是我迄今为止的工作

1 个答案:

答案 0 :(得分:1)

fs包中包含有用的dir_map函数,该函数将函数应用于路径中的每个文件。如果您需要对要使用的文件进行更多控制,您可以选择将文件名的向量管道传输到purrr::map()

您的错误Warning message: Unreplaced values treated as NA as .x is not compatible. Please specify replacements exhaustively or supply .default是因为您正在将1, 2, 3重新编码为a, b, c,但其中一个Species有6行,因此4, 5, 6被重新编码为{{1} }}。我使用NA来避免这个问题。

letters[n]