我是R的新手,对即使是简单的功能也不是很熟悉。 我的尝试的简短描述:我有一个带有几个子目录的指令(11个子目录,如下面的代码所示)。每个子目录。有同样的打击。每个子目录。包含四个.csv文件,称为gwn,rh,ro和rg1。我想逐个读取每个gwn.csv并将其中的一部分写入另一个文件,该文件已在我的主morking文件夹中创建。
这是我的最后一次尝试:
files<-list.files("../Tagessummen")
这给了我看起来像:
的direktory的结构[1] "Beobachtet" "Projektion_00" "Projektion_11"
[4] "Projektion_22" "Projektion_33" "Projektion_44"
[7] "Projektion_55" "Projektion_66" "Projektion_77"
[10] "Projektion_88" "Projektion_99"
现在我可以用它来定义循环路径。 我试过这个:
for(i in 1:length(files))
Grundwasserneubildung_Daten<-read.table('../Tagessummen/',files,'/zeit.dat/Tag/geb_sum.gwn')
Grundwasserneubildung_Daten<-Grundwasserneubildung_Daten[-1,-1]
Grundwasserneubildung<-cbind(Grundwasserneubildung,Grundwasserneubildung_Daten)
end
但它不起作用。我认为,它与循环的定义有关。 我确实阅读了很多类似的问题,但到目前为止还没有。
第二个问题是,如何实现另一个循环,以相同的“一个接一个”的方式阅读和使用其他三个文件。希望你能得到一些有启发性的答案。
答案 0 :(得分:0)
试试这个:
files<-list.files("../Tagessummen")
Grundwasserneubildung_Daten <- NULL
for(i in 1:length(files)) {
Grundwasserneubildung_Daten[[i]]<-read.table(paste0('../Tagessummen/',files[i],'/zeit.dat/Tag/geb_sum.gwn'))[-1,-1]
}
Grundwasserneubildung <- do.call(cbind,Grundwasserneubildung_Daten)
这会构建一个数据框列表,然后使用do.call()
在最后的所有数据框上调用cbind()
。但是,如果文件的长度不同,cbind()
将无效。
一个错误是for
循环的不正确结构。第二个是你需要paste0()
来正确连接字符串。第三个错误是files
是文件名的向量,因此当您将字符串连接在一起时,您正在尝试读取文件名向量,这将无法按计划工作。使用files[i]
而不是files
一次引用向量的单个元素(文件名)。