【发布时间】:2014-05-15 03:33:47
【问题描述】:
我有一个情况。我得到的平均值不适用于多个 id,并且也已经解决了一些问题,但正在寻找可能的解决方案的指导。
我的数据在数据框中。
- 我在 for 循环之前创建了一个数据框“b”。用于读取文件的 for 循环。
- 在 for 循环中,我通过 b
- b 的类是一个data.frame
- “b”上的名称函数显示一列,该列是函数调用中为污染提供的参数
-
当我返回 b 时,它会显示正确的结果,但对于多个 id,它们会出现在不同的部分。例如,对于 70:72,它显示
1st $nitrate...underneath the values 2nd $nitrate...underneath values 3rd $nitrate...and values
问题:当我继续计算多个 id 的平均值时,它只考虑来自第一个文件的第一组数据。
函数调用是A1p1("specdata","nitrate",70:72)。
我还在下面粘贴函数的示例输出
$nitrate
[1] NA NA NA NA NA NA NA NA NA NA
[11] NA NA NA NA NA NA NA NA NA NA
[21] NA NA NA NA NA NA NA NA NA NA
.............
$nitrate
[1] NA NA NA NA NA NA NA NA NA NA
[11] NA NA NA NA NA NA NA NA NA NA
[21] NA NA NA NA NA NA NA NA NA NA
............
$nitrate
[1] NA NA NA NA NA NA NA NA NA NA
[11] NA NA NA NA NA NA NA NA NA NA
[21] NA NA NA NA NA NA NA NA NA NA
有没有人可以建议的补救措施?
我使用的完整代码如下:
**
A1p1 <- function(directory,pol,id)
{
filename <- list.files(pattern=".csv")
a <- data.frame()
for( i in 1:length(id))
{
data <- read.csv(paste(directory,"/",sprintf('%03d',id[i]),".csv",sep=""),header=T)
a <- c(a,data[pol])
}
if(pollutent=="aa")
{
me <- mean(a$aa,na.rm=T)
}
else
{
me <- mean(a$bb,na.rm=T)
}
return(round(me,digits=3))
}
【问题讨论】:
-
欢迎您,但我对您的问题投了反对票。很难看出这里要问什么。我试了一下,可能会在再读几遍后破译,但如果你能充分澄清你的问题会更好。