파일로 가득 찬 디렉토리를 읽고 각 데이터 파일에서 완전히 관찰 된 사례의 수를보고하는 R 함수를 작성하는 방법을 배우고 있습니다.For 루프 만 마지막 레코드 표시
내 기능은 하나의 사례에서 작동하지만 여러 사례가있는 경우 루프는 마지막 레코드 만 표시합니다.
complete <- function(directory, id = 1:332) {
files_list <- list.files(path = directory, full.names = TRUE)
dat <- data.frame()
for (i in id) {
dat <- rbind(dat, read.csv(files_list[i]))
}
nobs <- sum(complete.cases(dat))
id <- i
data.frame(id, nobs)
}
내 예상 결과
ID가 1 = 때 대신> complete("specdata", 1:6)
## id nobs
## 1 1 932
## 2 2 711
## 3 3 475
## 4 4 338
## 5 5 586
## 6 6 463
을 실행 : 6 10 개 결과와 data.frame을 반환 그것, 그것은 반환
는> complete("Specdata", 1:6)
id nobs
1 6 3562
나는 의심 문제는 루프가 끝날 때마다 함수가 값을 대체한다는 것입니다. 저는 SO와 다른 곳에서 "마지막 기록만을 보여줌"문제에 대한 도움을 구했고 그 답을 통해 해결책을 찾을 수 없습니다.
도움을 주셔서 감사합니다. 나는 R이 완전히 새롭다는 것을 확신합니다.
@ ZheyuanLi 일 때마다
rbind
을 반복해야합니다. 예, 전화를 걸었습니다. 죄송합니다. –** 예상 출력 ** (ala [reproducible examples] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example))을 제공해주십시오. 귀하의 코드 (@ ZheyuanLi 명시)는 명시 적으로 단일 행 데이터 프레임을 반환한다는 점에서 완벽하게 분명합니다. 'dat'을 반환하고 싶다면 마지막 줄 (또는 return (...) 내)에 있어야합니다. – r2evans
@ r2evans - 원래 출력물을 예상 출력으로 편집했습니다. 불분명하고 도움을 주셔서 감사합니다. – john1607