较长的对象长度不是较短对象长度的倍数[Cursera R Course]

  • 本文关键字:对象 Cursera Course r
  • 更新时间 :
  • 英文 :


再次提出另一个问题。我最终把以前的代码拆了下来,从头开始,因为我发现我被错误淹没了,这似乎是一种更容易的修复方法。我的函数现在返回正确的值,但只有当我让它查看一个文件(ID(时。每当我试图在一系列文件(即1:10(上运行时,我都会得到一个错误的答案和Warning message: In dat[, "ID"] == ID : longer object length is not a multiple of shorter object length

这是代码(我最初尝试使用lapply和sapply与data.table,但这似乎打开了一个我没有准备好的全新蠕虫(。

pollutantmean <- function(directory, pollutant, 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[ , pollutant], na.rm =TRUE, useNames = TRUE)
}

当我将函数调用为> pollutantmean("./specdata/", "nitrate", 23)它以1.280833返回,这是我期望在这次通话中看到的。

然而,当我称之为pollutantmean("./specdata/", "sulfate", 1:10)它返回之前提到的警告信息

我不知道这是否与我定义dat <-data.frame()的列或行的方式有关,或者与其他可能让我眼前一亮的事情有关。

%in%替换==。这允许与矢量而不是标量进行比较

# which is not needed
dat_subset <- dat[dat[,"ID"] %in% id, ]

最新更新