Я очень новичок в программировании, как в R, так и вообще.
Вот моя цель для написания этого скрипта:
У меня есть 332 CSV-файла. Я хочу: «Напишите функцию, которая считывает каталог, полный файлов, и сообщает о количестве полностью наблюдаемых случаев в каждом файле данных. Функция должна возвращать фрейм данных, в котором первый столбец — это имя файла, а второй столбец — количество полных случаев».
Схема функции выглядит следующим образом:
Complete ‹- function(directory, id = 1:332) { ## 'directory' - это вектор символов длины 1, указывающий ## расположение файлов CSV
## 'id' is an integer vector indicating the monitor ID numbers ## to be used ## Return a data frame of the form: ## id nobs ## 1 117 ## 2 1041 ## ... ## where 'id' is the monitor ID number and 'nobs' is the ## number of complete cases
}
Пример вывода будет выглядеть так:
source("complete.R")
complete("specdata", 1)
## id nobs
## 1 1 117
complete("specdata", c(2, 4, 8, 10, 12))
## id nobs
## 1 2 1041
## 2 4 474
## 3 8 192
## 4 10 148
## 5 12 96
- Мой скрипт пока выглядит так:
setwd("C:/users/beachlb/Desktop/R_Programming/specdata") #это локальный каталог на моем компьютере, где хранятся все 332 файла csv
>complete <- function(directory, id = 1:332) {
>files_list <- list.files(directory, full.names=TRUE) #creates a list of files from within the specified directory
>dat <- data.frame() #creates an empty data frame that we can use to add data to
>for (i in id) {
>dat <- rbind(dat, read.csv(files_list[i])) #loops through the 332 csv files, rbinding them together into one data frame called dat
}
>dat$nobs <- sum(complete.cases(dat)) #add the column nobs to dat, populated with number of rows of complete cases in the dataframe
>dat_subset <- dat[which(dat[, "ID"] %in% id),] #subsets dat so that only the desired cases are included in output when function is run
>dat_subset[, "ID", "nobs"] #prints all rows of the desired data frame for the named columns}
Когда я запускаю свою функцию как есть, я получаю эту ошибку: «Ошибка в drop && !has.j: недопустимый тип «x» в «x && y». Я не уверен, что выдает мне эту ошибку. Я был бы признателен за любые советы о том, что может быть причиной этой ошибки и как я могу работать, чтобы решить ее. Указание мне на литературу, которую я мог бы прочитать, чтобы изучить это, и / или учебные пособия, которые помогут мне укрепить навыки кодирования, необходимые для предотвращения этой ошибки, также будут оценены.
Предисловие: я не уверен, что должен задавать этот вопрос в отдельной ветке. Прямо сейчас моя функция написана для заполнения общего количества полных случаев для всех строк (для всех 332 файлов), вместо этого специально подсчитать количество полных случаев для данного идентификатора монитора и поместить его в столбцы только для этого идентификатора. (Обратите внимание, что каждый файл назван в честь идентификатора монитора и содержит только наблюдения из этого монитора, например, 001.csv = выходные данные монитора 1, 002.csv = выходные данные монитора 2). Поэтому я надеюсь, что кто-то поможет указать мне ресурс для подмножества dat, чтобы при заполнении столбца nobs каждая строка в столбце nobs давала количество полных случаев для каждого номера идентификатора.
dat_subset[, "ID", "nobs"]
- person Pierre L   schedule 18.08.2015