(R)for数据帧循环无效

时间:2019-01-19 12:08:49

标签: r loops dataframe for-loop

我正在尝试使用for循环创建数据框架,因为我想在每次迭代中使用新元素更新数据框架中的行。但是,只有最后一个值会打印到数据框中。

我尝试将不同的文件读入数据帧,然后使用'cbind'将数据文件的条目号与文件中完整案例的数量进行匹配。该代码适用于单个条目,但是我无法获得for循环来将所有不同的行加在一起。似乎是将第二个迭代复制到第一个迭代,依此类推。

完整案例

complete <- function(directory, id) {

    fileList <- dir(directory, full.names = TRUE);
    frame <- data.frame();

    for (i in seq_along(id)) {

        data <- complete.cases(read_csv(fileList[i]));
        frame <- cbind(i, sum(data));
    }

}

这样,我想获得一个数据框,其中列出了指定目录中的不同文件以及完整案例的数量。您能告诉我在这个for循环中我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

由于您总是在循环中覆盖数据帧frame,因此也需要cbind

complete <- function(directory, id) {

    fileList <- dir(directory, full.names = TRUE);
    frame <- data.frame();

    for (i in seq_along(id)) {

        data <- complete.cases(read_csv(fileList[i]));
        frame <- cbind(frame, i, sum(data));
    }

}

否则,您的frame会在每次新的迭代中设置。因此,如果要将其添加到frame中,则还必须输入frame作为输入