Новое для R и для программирования я рассмотрел все возможные потоки на SO на этом задании Coursera, но не смог понять, в чем проблема. Я знаю, что эту функцию можно оптимизировать, используя lapply и многое другое, но я хотел бы знать, почему эта функция не работает. Я чувствовал, что некоторые вопросы по этой функции несколько раздражают некоторых пользователей. Честно говоря, я просмотрел соответствующие сообщения, и я не вижу, что я могу сделать с этой конкретной ошибкой.Нет выхода при запуске функции
pollutantmean <- function (directory, pollutant, id) {
#Create the data frame with the data from the 332 files
files <- list.files(getwd())
df <- data.frame()
id <- 1:332
for (i in 1:length(id)) {df <- rbind(df, read.csv(files[i]))
if (pollutant=="nitrate"){
#Create a subset for nitrate values of df
df_nitrate <- df[df$ID==id[i], "nitrate"]
#Take mean of df_nitrate
mean (df_nitrate, na.rm = TRUE)
} else {
#Create a subset for sulfate values of df
df_sulfate <- df[df$ID==id[i],"sulfate"]
#Take mean of df_sulfate
mean(df_sulfate, na.rm = TRUE)
}
}
}
Для тех из вас, кто не слышал об этой функции присваивания: У меня есть 332 файлов CSV (названный 001.csv, 002.csv и так далее) в моем рабочем каталоге. Задача состоит в том, чтобы получить все из них в одном кадре данных и иметь возможность вызывать среднее значение столбца файла (заданного переменной «id», соответствующей этому файлу) или нескольких файлов (некоторые примеры функций и результатов можно найти here)
Я попытался вызвать отладочных или отладочные функции, чтобы расположить эту проблему, но безрезультатно:
pollutantmean(getwd(), "nitrate", 23)
> traceback()
No traceback available
> debug(pollutantmean)
>
ОС Windows, 10.
Любые предложения или комментарии приветствуются , Заранее спасибо.
В чем проблема? Что такое сообщение об ошибке? – MaxPD
В 'df [df $ ID == id [i]," nitrate "]', фильтрация по id кажется излишней, так как вы загружаете CSV-файлы указанного 'id'. Я думаю, вам нужно вычислить среднее значение за пределами цикла for после загрузки всех файлов CSV. –
@MaxPD Нет сообщения, это вещь. – kazim