小编use*_*428的帖子

mean.default参数中的警告消息不是数字或逻辑返回na但我的矢量是数字

我正在运行这个R代码来导入大量的csv文件并计算所有数据集的一个数值向量(硝酸盐)的平均值,该数据集通过整数向量ID的某些值进行过滤.

setwd("C:/Users/americo/Documents/Documenti_2_0/Education/Data science/Coursera/R programming/rworkingdir/specdata")
lista_tot1 = list.files(pattern="*.csv");
lista_tot2 = lapply(lista_tot1, read.csv, sep = ",")#stampa tutti i csv                                  
lista_tot3<-do.call("rbind", lista_tot2)
lista_tot<-lista_tot3[is.element(lista_tot3$ID, 3:4),]
media<-mean(lista_tot$nitrate, na.rm=TRUE)
media
Run Code Online (Sandbox Code Playgroud)

它的工作原理.

但是,如果我尝试编写这个函数,这似乎与我类似:

pollutantmean <- function(directory, pollutant, id = 1:332) {
  setwd(directory)
  lista_tot1 = list.files(pattern="*.csv");
  lista_tot2 = lapply(lista_tot1, read.csv, sep = ",")  
  lista_tot3<-do.call("rbind", lista_tot2)
  lista_tot<-lista_tot3[is.element(lista_tot3$ID, id),]
  media<-mean(lista_tot$pollutant), na.rm=TRUE)
  return(media)
}
Run Code Online (Sandbox Code Playgroud)

然后

media1<-pollutantmean("C:/Users/americo/Documents/Documenti_2_0/Education/Data science/Coursera/R programming/rworkingdir/specdata","nitrate", 3:4)
Run Code Online (Sandbox Code Playgroud)

然后它返回给我的消息:

warning message in mean.default argument is not numeric or logical returning na 
Run Code Online (Sandbox Code Playgroud)

...但我的矢量是数字

这真的对我没有意义.如果我要求返回最后一个数据集lista_tot的结构,硝酸盐仍然是数字.

我真的不知道该怎么做,如果一些非常有经验的用户可以帮助我,我将非常感激.

r

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

r ×1