我在目录中有多个由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:无限递归/选项(表达式=)?
答案 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))