对于在R中使用循环来在目录中使用多个文件

时间:2016-04-27 04:02:39

标签: r

我在目录中有多个由id号编码的文件。每个文件都有四个变量。其中一个变量具有与文件相同的id号。我需要使用每个文件为其他三个变量中的一个运行函数均值。

我是初学者。到目前为止,我已经从这个网站和其他人看到,如何使用for和if循环来使用单个文件中的数据。我尝试过很多种组合。其中之一如下。但是,我没有得到所需的输出。你能指导吗?

pollutantmean<- function (directory, pollutant, id = 1:332){


    directory  = "~/specdata" 
    pollutant = "sulfate"
    for (i in 1:332){         
        pollutantmean (directory [i])
        options(expressions=1000) 
        }
        means
}

id是目录中包含的每个文件的编号&#34; specdata&#34;在我的工作目录中,污染物是变量,将由数据集中的两个变量 - 硫酸盐和硝酸盐中的任何一个使用

但是,在运行时

pollutantmean()    

我得到了

  

错误:评估嵌套太深:无限递归/   选项(表达式=)?换行时出错:评估嵌套也是如此   deep:无限递归/选项(表达式=)?

1 个答案:

答案 0 :(得分:3)

这是一个建议的解决方案:

(i)在R中创建一个文件名列表(假设文件是​​ .txt格式。

files<-list.files(pattern="\\.txt")

如果文件没有驻留在您的工作目录中,您可能想要说明目录并获取完整路径名:

list.files(path="e:/data", pattern="\\.txt", full.names=T)

(ii)将表格读入一个清单:

tmp<-lapply(files, function(x) read.table(x, header=T))

(iii)计算清单中每个表的硫酸盐平均值:

sapply(1:length(tmp), function(x) mean(tmp[[x]]$sulfate, na.rm=T))