函数在 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%
而不是 ==
。
我正在为 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%
而不是 ==
。