我有如下所示的代码,用R编写。它打算做的是读取文件夹中的一些ascii文件,一旦读取它们就会将其数据一个接一个地附加在一个文件中,同时排除每个初始文件的最后三行。然后它打算将最终文件保存在csv中。 我面临的问题是我在我的文件夹中写了“final.csv”,但文件是空的......任何人都会知道为什么? 在这里,您将找到两个ascii文件,我打算在另一个下面追加一个数据,同时排除每个文件的标题。
curl -g -O http://goldsmr4.gesdisc.eosdis.nasa.gov/opendap/MERRA2/M2T1NXSLV.5.12.4/2015/05/MERRA2_400.tavg1_2d_slv_Nx.20150501.nc4.ascii?T10M[0:23][241:241][343:343],lat[241:241],time[0:23],lon[343:343] -O http://goldsmr4.gesdisc.eosdis.nasa.gov/opendap/MERRA2/M2T1NXSLV.5.12.4/2015/05/MERRA2_400.tavg1_2d_slv_Nx.20150502.nc4.ascii?T10M[0:23][241:241][343:343],lat[241:241],time[0:23],lon[343:343]
我正在使用OS X El Capitan v 10.11.4。并且RStudio v 0.99.451和R 3.2.4。
setwd("/path to folder where the ascii files are located")
table<-list.files("/path to folder where the ascii files are located", full.names = TRUE)
table
# To read all the .ascii inside the folder
f<-function(x){
k<-1
y<-data.frame(x[k])
while(k<=length(x)){
k<-k+1
y<-data.frame(y,x[k])
}
return(y)
}
info_data<-f(table)
# To read the data of each ascii and exlude the values of the three lines of each ascii
h<-function(z){
s<-c()
t<-1
while(t<=length(z)-3){
s<-c(s,z[t])
s<-s+1
}
return(s)
}
# Append the data of each ascii, one below the other, in a single file and save it as csv
g<-function(y){
z<-c()
j<-1
r<-length(y[1,])
while(j<=r){
z<-append(z,h(y[,j]))
j<-j+1}
return (z)
}
final<-g(info_data)
write.csv(final, "final.csv", sep = ",")
答案 0 :(得分:0)
我不了解你的代码,但看着你的口头描述......
要做的是读取文件夹中的一些ascii文件,一旦读取它们 将其数据一个接一个地添加到一个文件中,同时排除 每个初始文件的最后三行。然后它打算保存 csv中的最终文件。
......以下内容应该这样做:
filenames <- dir("some folder", full.names=TRUE)
readitall <- lapply(filenames, read.csv)
trimit <- lapply(readitall, function(x) x[1:(NROW(x)-3),])
combineit <- do.call(rbind, trimit)
write.csv(combineit, "some name.csv")