Рассчитать среднее значение одного столбца из нескольких файлов CSV в R

Я новичок в R. У меня более 300 CSV-файлов в папке (с именем 001.csv, 002.csv и т. Д.). Каждый содержит фрейм данных с заголовком. Я пишу функцию, которая будет принимать три аргумента: расположение файлов, имя столбца, для которого нужно вычислить среднее значение (внутри фреймов данных), и файлы, которые вы хотите использовать в вычислениях.

Вот моя функция:

pollutantmean2 <- function(directory = getwd(), pollutant, id = 1:332) {

    # add one or two zeros to ID so that they match the CSV file names
    filenames <- sprintf("%03d.csv", id)

    # path to specdata folder
    # if no path is provided, default is working directory
    filedir <- file.path(directory, filenames)

    # get the data from selected ID or IDs from the specified path
    dataset <- read.csv(filedir, header = TRUE)

    # calculate mean removing all NAs
    polmean <- mean(dataset$pollutant, na.rm = TRUE)

    # return mean
    polmean

}

Похоже, что с моим кодом две вещи не так. Чтобы разбить его на части, я разделил функцию на две отдельные функции для выполнения двух задач: 1) получить необходимые файлы и 2) вычислить среднее значение нужного столбца (иначеpollutant).

1) Получение соответствующих файлов - это работает, пока я хочу только один файл. Если я выберу ряд файлов, таких как1:25 Я получаю сообщение об ошибке, которое говоритError in file(file, "rt") : invalid 'description' argument, Я погуглил эту ошибку, но до сих пор не знаю, как ее исправить.

# function that gets csv files and stores them
getfile <- function(directory = getwd(), id) {
    filenames <- sprintf("%03d.csv", id)
    filedir <- file.path(directory, filenames)
    dataset <- read.csv(filedir, header = TRUE)
    dataset
}

Если я бегуgetfile("specdata", 1) работает нормально, но если я бегуgetfile("specdata", 1:10) Я получаю следующую ошибку:Error in file(file, "rt") : invalid 'description' argument.

2) Вычисление среднего для указанного именованного столбца. Предполагая, что у меня есть пригодный для использования фрейм данных, я пытаюсь вычислить среднее значение с помощью следующей функции:

calcMean <- function(dataset, pollutant) {
    polmean <- mean(dataset$pollutant, na.rm = TRUE)
    polmean
}

Но если я бегуcalcMean(mydata, "sulfate") (гдеmydata это фрейм данных, который я загрузил вручную) Я получаю сообщение об ошибке:Warning message: In mean.default(dataset$pollutant, na.rm = TRUE) : argument is not numeric or logical: returning NA

Странно то, что если я бегуmean(mydata$sulfate, na.rm = TRUE) в консоли работает нормально.

Я буду признателен за любую помощь, которая укажет мне правильное направление. Я исследовал это в течение нескольких дней, и после бесконечной настройки у меня кончились идеи.

Ответы на вопрос(2)

Ваш ответ на вопрос