gpt4 book ai didi

r - 我怎样才能改进这个R函数

转载 作者:行者123 更新时间:2023-12-01 11:33:44 25 4
gpt4 key购买 nike

我是 R 的新手。我创建了下面的函数来计算 332 个 csv 文件中包含的数据集的平均值。寻求有关如何改进此代码的建议。运行需要 38 秒,这让我觉得效率不高。

pollutantmean <- function(directory, pollutant, id = 1:332) {
files_list <- list.files(directory, full.names = TRUE) #creats list of files
dat <- data.frame() #creates empty dataframe
for(i in id){
dat<- rbind(dat,read.csv(files_list[i])) #combin all the monitor data together
}
good <- complete.cases(dat) #remove all NA values from dataset
mean(dat[good,pollutant]) #calculate mean
} #run time ~ 37sec - NEED TO OPTIMISE THE CODE

最佳答案

无需每次使用 for 循环 创建 void data.framerbind,您可以存储所有 数据。 frames 在列表中并将它们组合成一个镜头。您还可以使用均值函数的 na.rm 选项来不考虑 NA 值。

pollutantmean <- function(directory, pollutant, id = 1:332)
{
files_list = list.files(directory, full.names = TRUE)[id]
df = do.call(rbind, lapply(files_list, read.csv))

mean(df[[pollutant]], na.rm=TRUE)
}

可选 - 我会使用 magrittr 提高可读性:

library(magrittr)

pollutantmean <- function(directory, pollutant, id = 1:332)
{
list.files(directory, full.names = TRUE)[id] %>%
lapply(read.csv) %>%
do.call(rbind,.) %>%
extract2(pollutant) %>%
mean(na.rm=TRUE)
}

关于r - 我怎样才能改进这个R函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729725/

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