Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For循环答案与正确答案不匹配。两个回路之间的差异不明';工作_R_For Loop_Functional Programming - Fatal编程技术网

For循环答案与正确答案不匹配。两个回路之间的差异不明';工作

For循环答案与正确答案不匹配。两个回路之间的差异不明';工作,r,for-loop,functional-programming,R,For Loop,Functional Programming,我正在学习课程R编程课程。我做的作业问题如下: 编写一个名为“PollutanMean”的函数,用于计算指定监控器列表中污染物(硫酸盐或硝酸盐)的平均值。函数“pollutantmean”有三个参数:“目录”、“污染物”和“id”。给定一个矢量监控器ID号,“pollutantmean”从“directory”参数中指定的目录读取监控器的“颗粒物数据”,并返回所有监控器的污染物平均值,忽略任何编码为NA的缺失值 此问题的数据集如下所示: 我得到的第一个循环的答案是3.8383,而第二个循环的正

我正在学习课程R编程课程。我做的作业问题如下:

编写一个名为“PollutanMean”的函数,用于计算指定监控器列表中污染物(硫酸盐或硝酸盐)的平均值。函数“pollutantmean”有三个参数:“目录”、“污染物”和“id”。给定一个矢量监控器ID号,“pollutantmean”从“directory”参数中指定的目录读取监控器的“颗粒物数据”,并返回所有监控器的污染物平均值,忽略任何编码为NA的缺失值

此问题的数据集如下所示:

我得到的第一个循环的答案是3.8383,而第二个循环的正确答案是4.064。我无法找到发生的差异,因为在第一个函数中进行了细分。我的调试说,它应该给出与函数2中显示的iv在函数1中完成的子集后相同的行数。但情况有所不同

职能1

pollutantmean<-function(directory, pollutant, id=1:332){
  file_list<-list.files(directory, full.names=TRUE)
  dat<-data.frame()
  mean_select_pol<-c()
  for(i in 1:332){
    dat<- rbind(dat, read.csv(file_list[i]))
  }
  select_pol<-dat[which(dat[,"ID"]==id), ]
  mean_select_pol<-mean(select_pol[, pollutant], na.rm=TRUE)
  mean_select_pol
}

pollutantmean尽管我无法通过提供的数据/函数获得与您相同的答案,无论我选择了哪种污染物。然而,通过纠正几个问题,我能够实现这两个功能。你的第一行是
select_polies,但我没有得到答案,所以我不得不发布它。我正处于学习阶段,没有得到答案会让人信心崩溃。好的,谢谢你的澄清。Akrun你能看一看并帮我解决这个问题吗?正确的做法是编辑你原来的问题以澄清问题,然后要求重新打开。这行应该做什么
select_pol感谢我几个小时来一直渴望得到的解释。非常感谢。
pollutantmean <- function(directory, pollutant, id = 1:332) {
  files <- list.files(directory, full.names=TRUE)
  dat <- data.frame()

  for(i in id)
  {
    dat <- rbind(dat, read.csv(files[i]))
  }

  mean_data <- mean(dat[,pollutant], na.rm = TRUE)
  round(mean_data, digits=3)
}
pollutantmean<-function(directory, pollutant, id=1:332){
  file_list<-list.files(directory, full.names=TRUE)
  dat<-data.frame()
  mean_select_pol<-c()
  for(i in id){
    dat<- rbind(dat, read.csv(file_list[i]))
  }
  mean_select_pol<-mean(dat[, pollutant], na.rm=TRUE)
  mean_select_pol
}