Как установить 2 параметра в 1 функцию - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть проблема, которую я пытаюсь решить, и я столкнулся с кирпичной стеной.Я пытаюсь найти среднее значение для набора данных с указанием конкретных названий загрязнителей и идентификационного номера.Так что код до цикла for, я считаю, работает нормально.Я создаю функцию с 3 аргументами, создаю пустой data.frame и затем связываю все мои файлы в одну переменную с именем «dat».

Теперь я пытаюсь подмножество этих новых связанных данных «id» ипо определенному названию загрязнителя (есть два из них, названные сульфатом и нитратом).Как видите, код в цикле for - беспорядок.

В частности, я не уверен, как установить два параметра / аргумента в одну функцию "which", поэтому я попытался создать отдельный для каждого.Я думал, что смогу использовать медианную функцию, чтобы найти среднее между обоими значениями

pollutantmean <- function(directory, pollutant, id = 1:332) {
  files_list <- list.files(directory, full.names = TRUE)
   dat <- data.frame()
    for (i in 1:332){
     dat <- rbind(dat, read.csv(files.list[1]))
}

 subset_id <-dat[which(dat[, "id"] ==id) , ]
 subset_poll <-dat[which(dat[, "pollutant"] ==pollutant) , ]
 median(subset_id)
}

. Вот фотография того, как выглядят данные головы / хвоста в R. enter image description here

РЕДАКТИРОВАТЬ1: Итак, я смог инициализировать функцию (правильный термин?), Но при попытке запустить ее с помощью ввода получаю множество «неопределенных столбцов, выбранных».

pollutantmean <- function(directory, pollutant, ID = 1:332) {
 files_list <- list.files(directory, full.names = TRUE)
   dat <- data.frame()
   for (i in 1:332) {
   dat <- rbind(dat, read.csv(files_list[1]))
  }
   subset_id <- dat[which(dat[, "ID"] == ID & dat[, "pollutant"] == 
      pollutant) ]
       median(subset_id[, "pollutant"], na.rm = TRUE)
  }

Функция помещается в память очень хорошо, но когда я пытаюсь ввести параметры "pollutantmean (" specdata "," sulfate ", 1:10)", я получаю следующие ошибки.

  Error in `[.data.frame`(dat, , "pollutant") : undefined columns selected
 In addition: Warning message:
 In dat[, "ID"] == ID :


 Error in `[.data.frame`(dat, , "pollutant") : undefined columns selected 

1 Ответ

0 голосов
/ 06 декабря 2018

Мне удалось решить этот вопрос с помощью посторонней помощи.

pollutantmean <- function(directory, pollutant, ID = 1:332) {
 files_list <- list.files(directory, full.names = TRUE)
 dat <- data.frame()
  for (i in ID) {
   dat <- rbind(dat, read.csv(files_list[i]))
  }

      mean(dat[!is.na(dat[, "ID"]),pollutant], na.rm = TRUE)
 }
...