如何将循环结果存储到数据框?

时间:2017-04-10 22:46:26

标签: r

我有一份我需要执行分析的文件列表。我想将每次迭代的结果存储为数据帧作为新行。这是我尝试但得到错误:

Error in `$<-.data.frame`(`*tmp*`, "c1", value = c(0, 64010, 0, 64010, : replacement has 2 rows, data has 65

这是我的代码(代码的这一部分只计算每个文件中的记录数)

h <- data.frame(matrix(0, ncol = 2, nrow = 65))
colnames(y) <- c("c1","c2")

my_files <- list.files("C:/Users/....")
for (i in 1:length(my_files))
{
k <- length(readLines(my_files[i], skipNul=TRUE))
 h$c1 <- rbind(h$c1, k)
}

2 个答案:

答案 0 :(得分:2)

length会给你一个号码。您正尝试将rbind单个值转换为两列对象。一种解决方案是在循环中的列c2中添加NA,如下所示:

h <- rbind(h, c(k,NA))

答案 1 :(得分:0)

尽量远离for循环。考虑使用其中一个apply函数,例如lapply。