r - list.files 函数中的 for 循环仅生成最后一个 i (R) 的结果

标签 r csv for-loop read.table

我有一个目录,其中包含两个 .csv 文件,我想读取这些文件并将其导入到 R 中。

到目前为止,我已经尝试过下面的代码,它确实有效。但仅限于其中一个文件。

for (i in list.files(path = ".", pattern = "\\.csv$")){
    print(i)
    f <- read.table(i, fill=TRUE, row.names=NULL)
    Table <- data.frame(f[3])
    Table["station.id"] <- i
}
Table

产品

      V3 station.id
1   8.27  agrin.csv
2   9.11  agrin.csv
3  11.60  agrin.csv
4  15.30  agrin.csv
5  20.53  agrin.csv
6  25.07  agrin.csv
7  27.42  agrin.csv
8  27.11  agrin.csv
9  22.92  agrin.csv
10 17.98  agrin.csv
11 13.15  agrin.csv
12  9.62  agrin.csv
13 17.34  agrin.csv

我想要的是实现一个 for 循环,它将迭代目录并为其中的每个文件创建一个如上所示的表。

请注意,print(i) 行返回两个结果,例如 agrin.csvagr.csv

有什么建议吗?

最佳答案

for循环之前,让:

 Table <- data.frame(V3=numeric(0), station.id=character(0))

这称为对象预分配。 然后,在循环中尝试使用 rbind。 使用此方案,您将增量创建对象。

关于r - list.files 函数中的 for 循环仅生成最后一个 i (R) 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23242384/

相关文章:

r - "Loop through"data.table 计算条件平均值

r - 读取蟾蜍导出的 csv 文件后,第一列名称中添加了奇怪的字符

r - 如何诱导 [r] 中两个逆累积概率分布之间的相关性?

.net - 在 .NET 中解析分隔的 CSV

mysql - nodejs mysql 将事件的值传递给另一个事件

java - 打破 Java 中的嵌套 for 循环

r - DEoptim包中步长参数解释

python - 在Python中读取具有不同长度列的.csv文件作为字典

java - 求数组中数字的平均值并找出大于平均值的数字

c - 如何在 C 中仅使用 2 个循环和 1 个 if 语句绘制此图?