2017-01-20 57 views
3

我試圖從幾個數據文件中提取信息 - 具體地說,每個文件中存在多少個完整的記錄。循環返回累積結果,而不是離散

下面是我寫的東西:

complete <- function(directory, id=1:332) { 
files_senscomp <- list.files(directory, full.names=TRUE)[id] 
pre_dat <- data.frame() 
full_dat <- data.frame() 

for (i in seq(files_senscomp)) { 
    pre_dat <- rbind(pre_dat, read.csv(files_senscomp[i])) 
    nobs <- sum(complete.cases(pre_dat)) 
    id <- i 
    full_dat <- rbind(full_dat,data.frame(id,nobs)) 
} 
full_dat 
} 

返回什麼,雖然是累積性的。這些ID是不正確的。下面是行動的功能和結果:

> complete("specdata", 40:45) 
    id nobs 
1 1 21 
2 2 248 
3 3 308 
4 4 382 
5 5 665 
6 6 1089 

爲什麼這不是一個「NOBS」結果返回的ID 40-45,沿着一個單獨的文件,而不是將所有的合併到這一點的文件?

+0

@李哲源ZheyuanLi - 能解決的累積結果的問題,謝謝。我仍然遇到了ID字段的問題,該字段應該返回40-45,但返回1-6。 – bdure

回答

2

該做的:

for (i in seq(files_senscomp)) { 
    pre_dat <- read.csv(files_senscomp[i]) ## no `rbind` 
    nobs <- sum(complete.cases(pre_dat)) 
    ID <- id[i] ## `id` is your function argument, taking `40:45` 
    full_dat <- rbind(full_dat,data.frame(id = ID, nobs = nobs)) 
    } 
+0

確實如此 - 謝謝。 – bdure