2016-05-12 7 views
-1
ULTRON <- function(directory, pollutant, id = 1:332) { 

     files_full <- list.files(directory, full.names = TRUE)  

     dat <- data.frame() 

     for (i in id) { 

       dat <- rbind(dat, read.csv(files_full[i])) 
     } 

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

Может кто-нибудь объяснить мне в деталях, что ниже линии делает в приведенном выше кодепрохождение кадров данных в R связываются

dat <- rbind(dat, read.csv(files_full[i])) 

Я не могу понять, как кадр данных, передаваемых в rbind является и что он возвращает.

+2

Более r-подобный подход будет 'dat <- do.call (rbind, lapply (files_full, read.csv))' вместо 'dat <- data.frame()' + весь цикл 'for' , –

+1

Кроме того, это, очевидно, из домашней работы Coursera, и ее спросили и много раз ответили на SO. –

+1

Проведите поиск по «rbind pollutant» для получения дополнительных примеров. И, пожалуйста, обратите внимание, что курсы Coursera предполагают, что вы будете использовать форумы справки по веб-странице для курса. –

ответ

2

Функция rbind() принимает два (или более) кадра данных и объединяет их по строкам. Другими словами, он «складывает» два кадра данных друг над другом. Если один кадр данных имеет больше или меньше столбцов, чем другой, то R не позволит выполнить операцию (хотя см. rbind.fill для способа сделать это).

dat <- rbind(dat, read.csv(files_full[i])) 

После этой операции dat будет то, что это было раньше, с новым кадром данных, приложенным к нему в нижней части. Этот кадр данных будет тем, что было прочитано в массиве files_full.

+0

Спасибо .. так много –