【发布时间】:2015-07-17 14:11:57
【问题描述】:
我正在为 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 = "硫酸盐", id = 1:10)
[1] 3.838328
警告信息: 在 dat[, "ID"] == id 中: 较长的对象长度不是较短对象长度的倍数
该函数返回 3.838328,但对于给定的参数,我应该得到 4.064。
就像我之前提到的,我是编程新手,这是家庭作业,所以我真的只是在寻找关于我的错误在哪里的建议和指导。
【问题讨论】:
-
id 是来自 1:332 的向量...所以你不能将它与 == 进行比较
-
与您的问题无关,但您在函数中将
id=1:332作为默认值,但在您的 for 循环中,它被硬编码为 1:332 而不是使用id变量。
标签: r function statistics