循环返回累积结果,而不是离散

时间:2017-01-20 17:00:45

标签: r loops for-loop

我正在尝试从多个数据文件中提取信息 - 具体来说,每个文件中存在多少条完整记录。

这是我写的:

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

为什么这不返回ID 40-45,以及单个文件的“nobs”结果,而不是所有文件组合到该点?

1 个答案:

答案 0 :(得分: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))
    }