Новичок в R: написание моей первой работы функции только для одной переменной - PullRequest
0 голосов
/ 10 ноября 2018

Я новичок в R. Я на самом деле пытаюсь написать свою первую функцию.

Я ищу csv-файлы в каталоге на моем компьютере, затем помещаю их в фрейм данных, а затем спрашиваю среднее значение некоторой переменной.

У меня 2 переменные: сульфат и нитрат.

Моя функция отлично работает для нитратов, но не для сульфатов. Я действительно не знаю, что не так. R studio дала мне подсказку: в mean.default (каталог $ suftate, na.rm = TRUE):

аргумент не является числовым или логическим: возвращает NA

Но я не знаю, что делать с этой информацией.

Моя функция:

 pollutantmean <- function (directory, polluant = "nitrate", id = 1:332)
 directory <- data.frame()
 for (i in id)
{directory <- rbind(directory, read.csv(full_files[i]))} 
if (polluant == "nitrate"){
mean(directory$nitrate,na.rm = TRUE)} 
else if (polluant == "sulfate"){
mean(directory$suftate,na.rm = TRUE)}
else {print("KO")}
}

Вы можете мне помочь?

Caroline

1 Ответ

0 голосов
/ 10 ноября 2018
  1. Открывающая фигурная скобка отсутствует в самой первой строке
  2. Эта функция будет работать, только если существует глобальная переменная с именем full_files; рассмотреть возможность передачи его функция явно
  3. Вероятно, опечатка в предложении else if: directory$sulfate, а не directory$suftate
  4. Эта функция ничего не возвращает; выполнение этого на самом деле ничего не сделает. Ну, технически, при запуске mean() выводится некоторый вывод, но это не всегда так, особенно при запуске из командной строки или при вызове из другой функции или скрипта. Попробуйте обернуть mean() в print() (или, что еще лучше, return в него, что позволит вам присвоить среднее значение другим переменным)
...