未能忽略我的文件列表中的 NA

卡西娅

我的目录中有一个文件列表(从 1 到 332)。file1对应id1,file2对应id2,依此类推。

每个文件包含 4 列,我必须通过忽略 NA 来计算第 2 列(标记为“污染物”)的总和和长度。

我已经尝试了一切:!is.na(file), na.rm = TRUE, omit...当我想要总和和长度从 1:100 或 1:60(从值 1 到另一个值)时,它起作用,但例如,它从 70:72 开始不起作用。我无法指出问题所在。

这是我处理它的代码部分:

pollutantmean <- function(directory,pollutant,id= 1:332){

  files <- list.files(directory)
  sums <- numeric (length(id))
  lengths <- numeric (length(id))
  means <- numeric (length(id))

  for (i in id){

      file <- read.csv(files[i])[,pollutant]
      sums[i] <- sum(file,na.rm = TRUE)
      lengths[i] <-length(file[!is.na(file)])
  }

  means <-(sum(sums)/sum(lengths))
  return(list(sums, lengths, means))

}

在此先感谢您的帮助!

游戏

你的索引是错误的。调用时pollutantmean(".","sulf",70:72)length(id)函数中的值是pollutantmean多少?(答案:3) ... 对于i循环中的第一个值,for (i in id)它是什么索引?(答案:70)
这是一个示例,说明您正在做什么以及错误索引会导致什么:

sums <- numeric(3)
sums[10] <- 42
sums
# > sums
# [1]  0  0  0 NA NA NA NA NA NA 42

...进一步的计算给出NA
所以,问题的根源与您的其他问题相同

这是您的功能的清晰版本:

pollutantmean <- function(directory, pollutant, id= 1:332) {
  files <- list.files(directory)
  L <- lapply(files[id], function(f) read.csv(f)[,pollutant])
  sums    <- sapply(L, sum, na.rm=TRUE)
  lengths <- sapply(L, function(l) sum(!is.na(l)))

  list(sums=sums, lengths=lengths, means=sum(sums)/sum(lengths))
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何忽略lapply中的NA?

来自分类Dev

合并列而忽略NA

来自分类Dev

cumsum is.na与Rle忽略奉献NA

来自分类Dev

替换嵌套列表中的“ NA”

来自分类Dev

忽略dplyr行总和中的NA

来自分类Dev

如果搜索词在列表中不可用,则忽略或连续显示NA-R

来自分类Dev

从列表列表中删除NA

来自分类Dev

无法为NA中的列表替换NA的错字

来自分类Dev

未能省略包含 NA 值的列:na.rm=TRUE 和 na.action=NULL

来自分类Dev

R:pmax()函数忽略NA?

来自分类Dev

通过忽略NA进行分组

来自分类Dev

JSON文件中的“ NA”转换为NA逻辑

来自分类Dev

如何在多个列表中替换_na

来自分类Dev

将NA附加到列表中

来自分类Dev

用列表中的值逐行替换NA

来自分类Dev

Tidyr中的eparate()与NA

来自分类Dev

R中的汇总NA

来自分类Dev

A + B,NA在r中

来自分类Dev

假人包装中的NA

来自分类Dev

R中的汇总NA

来自分类Dev

使用na.omit或NA.RM和mapply跨Datafrme的多个列忽略R中的NA

来自分类Dev

仅忽略在特定列中不与其他NA重叠的NA

来自分类Dev

查找相同矩阵的计数并忽略矩阵中存在的NA

来自分类Dev

根据值从数据框中删除行,忽略 NA

来自分类Dev

我的数据框中的NA问题

来自分类Dev

从功能中的R中的列表列表中删除NA

来自分类Dev

从巨大的栅格文件中删除NA值

来自分类Dev

从巨大的栅格文件中删除NA值

来自分类Dev

用NA替换NULL是列表