Loops csv文件组合中特定列的平均值
我真的是R的新手。如果能得到任何帮助,我将不胜感激 我有很多文件需要合并为一个数据帧,然后得到第2列或第3列的平均值。我试过了,但我觉得我犯了一些愚蠢的错误,或者可能完全错了Loops csv文件组合中特定列的平均值,loops,mean,lapply,Loops,Mean,Lapply,我真的是R的新手。如果能得到任何帮助,我将不胜感激 我有很多文件需要合并为一个数据帧,然后得到第2列或第3列的平均值。我试过了,但我觉得我犯了一些愚蠢的错误,或者可能完全错了 polmean <- function(directory, pol, id = 1:3) { Dataframe <- function (id) { Filenames <- list.files (pattern = "*.csv") R
polmean <- function(directory, pol, id = 1:3) {
Dataframe <- function (id) {
Filenames <- list.files (pattern = "*.csv")
Reqfiles <- Filenames [id]
LoadReqfiles <- lapply(Reqfiles, read.csv)
}
x <- Dataframe (id)
Colomnmeans <- function (pol, removeNA = TRUE) {
means <- 0
if (pol == "sulfate") {
means <- mean (x[,2], na.rm = removeNA)
} else {
means <- mean (x[,3], na.rm = removeNA)
}
means
}
Colomnmeans (pol, removeNA = TRUE)
}
polmean您在这里犯了几个错误。
错误#1:函数Dataframe
未返回值。(见下文)
错误2:当您使用lappy
时,结果是一个列表。因此,x
是数据帧的列表(而不是?data.frame
)。因此,您将无法访问数据帧列表中的不同列。您必须在数据帧上循环
所以试试这个:
polmean <- function(directory, pol, id = 1:3) {
Dataframe <- function (id) {
Filenames <- list.files(directory,pattern=".csv",full.names=TRUE)
Reqfiles <- Filenames[id]
LoadReqfiles <- lapply(Reqfiles, read.csv)
return(LoadReqfiles) # Mistake1: Need to return the value
}
x <- Dataframe(id)
Colomnmeans <- function (pol, removeNA = TRUE) {
means <- NULL
if (pol == "sulfate") {
for(i in 1:length(x)) means <- c(means,x[[i]][,2])
} else {
for(i in 1:length(x)) means <- c(means,x[[i]][,3])
}
mean(means, na.rm = TRUE)
}
Colomnmeans(pol, removeNA = TRUE)
}
因此,这不会影响mean
的功能,而不是使用0
的初始化值
希望这有帮助
length(NULL)