gpt4 book ai didi

r - mean.default参数中的警告消息不是数字,也不是逻辑返回na,但我的向量是数字

转载 作者:行者123 更新时间:2023-12-04 11:53:57 27 4
gpt4 key购买 nike

我正在运行此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

它的工作原理。

但是,如果我尝试编写此函数,则该函数与我类似:
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)
}

然后
media1<-pollutantmean("C:/Users/americo/Documents/Documenti_2_0/Education/Data science/Coursera/R programming/rworkingdir/specdata","nitrate", 3:4)

然后它向我返回消息:
warning message in mean.default argument is not numeric or logical returning na 

...但是我的向量是数字

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

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

最佳答案

更改此:

media<-mean(lista_tot$pollutant), na.rm=TRUE)

对此:
media<-mean(lista_tot[[pollutant]], na.rm=TRUE)

因为“$”不评估它的参数。在这种情况下,“污染物”不是列名,因此您需要一个提取函数,该函数将评估命名对象 pollutant是“携带”的对象(即列名“nitrate”),以从数据帧中正确提取。

关于r - mean.default参数中的警告消息不是数字,也不是逻辑返回na,但我的向量是数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24154527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com