函数在 R 中没有产生正确的平均输出

function not producing correct mean output in R

我正在为 Coursera 上的 r 编程课程做家庭作业。我有一个包含 332 台监视器的天气数据读数的目录。它是 4 个变量的 172,385 个观测值。变量或日期、硫酸盐、硝酸盐和监视器 ID。我已经编写了下面的函数并让它工作,但它没有返回正确的值。这是我第一次真正体验编程,这是一项家庭作业,所以我真的只是在寻找关于我做错了什么的提示或建议。

这是我的函数:

polutantmean14 <- function(directory, polutant = "nitrate", id = 1:332) {
  files_list <- list.files(directory, full.names = TRUE)
  dat <- data.frame()
  for ( i in 1:332) {
    dat <- rbind(dat, read.csv(files_list[i]))
  }
  dat_subset <- dat[which(dat[, "ID"] == id), ]
  mean(dat_subset[, polutant], na.rm= TRUE)
}

这是我得到的错误:

polutantmean14("specdata", polutant = "sulfate", id = 1:10)

[1] 3.838328

Warning message: In dat[, "ID"] == id : longer object length is not a multiple of shorter object length

函数 returns 3.838328 但是对于给定的参数我应该得到 4.064.

就像我之前提到的,我是编程的新手,这是家庭作业,所以我真的只是在寻找关于我的错误所在的建议和指导。

您正在比较长度为 332 的向量和长度为 10 的向量。

R(与 MATLAB 不同)可以让您比较不同长度的向量,但如果较长向量的长度不是较短向量长度的倍数,则会发出警告。也就是说如果mod(length(longerVec),length(shorterVec)) != 0

长话短说:重新思考并重写您的代码。 ;-)

尝试使用 %in% 而不是 ==