首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用R中的循环处理文件夹中的所有文件

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

Stack Overflow用户
提问于 2014-01-29 16:40:09
回答 1查看 3.5K关注 0票数 0

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

代码语言:javascript
复制
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")

要读取的99个文件是"CLIM0101.WTG“(从"CLIM9901.WTG”到“CLIM9901.WTG”),它们应该通过“CLIM9901.WTG”写到“livent201401.txt”(通过"clim201499.txt“)。下面是指向文件文件夹的链接:

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

那么这里有什么问题呢?我不知道如何编写循环,也没有找到关于如何编写循环的很好的描述。以前的循环问题都有非循环的答案,但这一次似乎正是我所需要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-29 16:43:34

我一直都这么做。基本的成语是

代码语言:javascript
复制
 files <- list.files(....)    # possibly with regexp
 reslist <- lapply(files, function(f) { ... some expressions on f ... }

您只需将您的几个步骤编码成以下内容

代码语言:javascript
复制
 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
 }

现在您使用的是myfun (上面的

代码语言:javascript
复制
 files <- list.files(....)        # possibly with regexp
 invisible(lapply(files, myfun))

很明显是未经测试的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21437156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档