R:附加ascii数据并将其另存为csv

时间:2016-05-05 16:50:03

标签: r csv append ascii

我有如下所示的代码,用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 = ",")

1 个答案:

答案 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")