我想从R中的几个文件中找出一列的平均值
这是我的代码,它为任何输入提供NA。请帮我知道我哪里做错了。(我是初学者)我想从R中的几个文件中找出一列的平均值,r,R,这是我的代码,它为任何输入提供NA。请帮我知道我哪里做错了。(我是初学者) pollutanmean最终您需要: fname <- sprintf("%s/%03d.csv", directory, id) ldf <- lapply(fname, read.csv) my.mean <- function(df, pollutant) mean(df[, pollutant], na.rm=TRUE) pollutant <- "nitrate" # or "su
pollutanmean最终您需要:
fname <- sprintf("%s/%03d.csv", directory, id)
ldf <- lapply(fname, read.csv)
my.mean <- function(df, pollutant) mean(df[, pollutant], na.rm=TRUE)
pollutant <- "nitrate" # or "sulfate"
sapply(ldf, my.mean, pollutant) # or
mean(sapply(ldf, my.mean, pollutant))
最好不要使用print()
从函数返回值。嘿!事实上,我想要所有文件中列的一个平均值。上面的代码给出了每个文件列的平均值。@Sonalizha我编辑了我的答案。请对更改进行评论。如果文件长度不同,sappy
将返回一个列表,并且mean(sappy(ldf,[[],污染物),na.rm=TRUE)
抛出一个错误。我想您还需要和unlist来处理:mean(unlist(sappy(ldf,[],污染物)),na.rm=TRUE)
。如果我们知道所有文件的长度都相同,那么连接平均值的平均值当然就是单个文件的平均值means@dww谢谢你的评论。你是对的。我会编辑我的答案。
fname <- sprintf("%s/%03d.csv", directory, id)
ldf <- lapply(fname, read.csv)
my.mean <- function(df, pollutant) mean(df[, pollutant], na.rm=TRUE)
pollutant <- "nitrate" # or "sulfate"
sapply(ldf, my.mean, pollutant) # or
mean(sapply(ldf, my.mean, pollutant))
mean(unlist(sapply(ldf, '[[', pollutant), na.rm=TRUE))