R编程:使用lapply时难以从帧中删除NA

时间:2014-06-12 23:55:46

标签: r mean lapply na

完全披露:我正在参加Coursera的数据科学课程。对于这个特殊问题,我们需要计算从多个文件中读取的一些污染物数据的平均值。

我需要帮助的主要功能还引用了我在脚本中编写的其他几个函数。为简洁起见,我将列出它们及其目的:

  • boundIDs:我用它来绑定输入,以便接受超出范围的输入。 (范围是1:332,所以如果有人输入1:400,则将范围更改为1:332)
  • pollutantToCode:将输入的污染物字符串转换为数据文件中该污染物的列号
  • fullFilePath - 创建文件名并将其附加到完整文件路径。因此,如果 有人说他们需要目录中ID 1的文件 "诅咒/你/突然/但/不可避免/背叛/",该功能将返回 "诅咒/你/突发/但/不可避免/背叛/ 001.csv"被添加到 文件列表矢量。

毕竟,我正在使用的主要功能是:

pollutantmean <- function(directory = "", pollutant, id = 1:332){
  id <- boundIDs(id)
  pollutant <- pollutantToCode(pollutant)
  numberOfIds <- length(id)
  fileList <- character(numberOfIds)
  for (i in 1:numberOfIds){
    if (id[i] > 332){
      next
    }
    fileList[i] <- fullFilePath(directory, id[i])
  }
  data <- lapply(fileList, read.csv)
  print(data[[1]][[pollutant]])
}

现在,我故意只打印第一帧数据,看看我的输出是什么样的。删除我尝试使用的NAs:

data <- lapply(fileList, read.csv)
data <- data[!is.na(data)]

但是NAs仍然存在,所以我尝试直接计算均值并使用na.rm参数:

print(mean(data[[1]][[pollutant]], na.rm = TRUE))

但是平均值仍然是&#34; NA&#34;。然后我尝试了na.omit:

data <- lapply(fileList, na.omit(read.csv))

......不幸的是问题仍然存在。

有人可以帮忙吗? : - /

(PS:现在我只是关注所读内容的第一帧,即数据[[1]],因为我认为如果我不能在第一帧获得它,那么&#39; #39;迭代其余部分毫无意义。)

0 个答案:

没有答案