r - (R) 数据框的 for 循环不工作
问题描述
我正在尝试使用 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 循环中做错了什么吗?
解决方案
由于您总是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
作为输入
推荐阅读
- drop-down-menu - 如何使用 styled-components 为下拉菜单设置样式
- javascript - UTC时间根据javascript中的时区
- python - Python/Pandas:在数据框或字典中查找最小值
- react-dropdown-tree-select - 选择所有已搜索的节点(可见的)?
- c# - 将文件转换保存为变量而不是物理位置
- c++ - 使用 Visual Studio 在 C++ 中嵌入 Julia
- laravel - 如何在 laravel 中对当前表列和关系表列使用 order by 查询?
- c - 下面c程序的输出不正确?
- python - Python字典映射NaN而不是内容
- javascript - FF 和 IE 不支持正则表达式后视的替代方法