【问题标题】:using "read.csv" in a "for loop"在“for循环”中使用“read.csv”
【发布时间】:2013-10-21 17:32:23
【问题描述】:

我有 300 个 *.csv 文件,格式与以下相同。文件名相同,索引从 1 到 300 开始(例如 myarray.1.csv myarray.2.csv ....myarray.300. csv):

     -124.5 -123.5  -122.5  -121.5  -120.5  -119.5  -118.5
31.5    0   0   0   0   0   0   0
32.5    0   0   0   0   0   0   0
33.5    0   0   0   0   0   0   0
34.5    0   0   0   0   0   1.1 5980.4
35.5    0   0   0   0   0   0   41
36.5    0   0   0   0.1 0   0   56
37.5    0   0   0   0   0   2.4 0
38.5    0   0   1   0   0.3 0.3 0
39.5    0   0   0   0   4.1 0.1 0

标题是经度,第一列是纬度,其他数组是对应的值。

我想使用“for-loop”和“write.csv”逐个读取它们并将它们转换为矩阵,从而丢弃标题和第一列,所以我只有最后的值. 我使用了这个命令,但它似乎不起作用:

setwd("C:/Users/WF")
for ( i in 1:300) {
file_new_name <- myarray
file_new_name <- paste(file_new_name,i,sep=".")
file_new_name <- paste(file_new_name,".csv",sep="")
file_read     <- read.csv(file_new_name,header=TRUE)
}

【问题讨论】:

  • 那不是 csv 格式,因为没有逗号。如果这实际上是您的文件的样子,请改用read.table
  • 请注意,您可以通过调用sprintf:sprintf('file_name%d.csv', i)来替换两个粘贴步骤。

标签: r csv for-loop


【解决方案1】:

这样的模式在我看来效果最好,并且在风格上非常像 R:

list_of_files = list.files("c:/User/WF", pattern = '*csv')
list_of_csv = lapply(list_of_files, read.csv)
big_object = do.call('rbind', list_of_csv)

我在这里假设您要阅读的所有 CSV 文件都存在于 c:/User/WF 中。

您必须自己填写详细信息,但这应该可以帮助您开始。

【讨论】:

  • @保罗·希姆斯特拉;谢谢。有效。似乎将它们绑定在一起是做我想做的最好的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
相关资源
最近更新 更多