使用R中的循环处理文件夹中的所有文件

Naz*_*zer 0 r

我需要处理文件夹中的所有文件,文件按顺序命名,所以我认为这是循环的好时机.处理单个文件的代码很简单:

df<-read.table("CLIM0101.WTG", skip = 3, header = TRUE)

df<-df[,-1]
df$year<-2014
df$day<-c(1:365)

write.table(df, "clim201401.txt", rownames = "FALSE")
Run Code Online (Sandbox Code Playgroud)

要读取的99个文件是"CLIM0101.WTG"到"CLIM9901.WTG",它们应该通过"clim201499.txt"写入"clim201401.txt".这是包含文件的文件夹的链接:

https://www.dropbox.com/sh/y255e07wq5yj1nd/4dukOLxKgm

那么这里的问题是什么?我不明白如何写一个循环,并没有找到如何这样做的很好的描述.以前的循环问题有非循环的答案,但似乎这次它真的是我需要的.

Dir*_*tel 7

我一直这样做.基本的习语是

 files <- list.files(....)    # possibly with regexp
 reslist <- lapply(files, function(f) { ... some expressions on f ... }
Run Code Online (Sandbox Code Playgroud)

你只需要将你的几个步骤编码成类似的东西

 myfun <- function(filename) {
      df<-read.table(filename, skip = 3, header = TRUE)
      df<-df[,-1]
      df$year<-2014
      df$day<-c(1:365)
      newfile <- gsub(".WTG", ".txt", filename_
      write.table(df, newfile, rownames = FALSE)  # don't quote FALSE
 }
Run Code Online (Sandbox Code Playgroud)

现在你使用myfun即使上面变成了

 files <- list.files(....)        # possibly with regexp
 invisible(lapply(files, myfun))
Run Code Online (Sandbox Code Playgroud)

显然未经测试.