Perhaps this toy example will help:

## example data
output <- list(1:5, 1:7, 1:4)

lens <- lapply(output, length)
maxlen <- max(unlist(lens))
outputmod <- lapply(output, function(x, maxl) c(x, rep(NA, maxl-length(x))), 
maxl=maxlen)
outputmat <- do.call(cbind, outputmod)
write.csv(outputmat, na='')

The idea is to pad the shorter vectors with NA (missing) before converting to a 
matrix structure.

I don't really need to know where the data came from, or that it's ncdf data, 
or how many months or years, etc. But I do need to know the structure of your 
"output" list. I'm assuming each element is a simple vector of numbers, and 
that the vectors' lengths are not all the same. If that's correct, then my 
example may be what you need.

This uses only base R methods, which I generally prefer. And no doubt it can be 
done more cleverly, or in a way that needs fewer intermediate variables ... but 
I don't really care.

-Don

--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
Lab cell 925-724-7509
 
 
On 3/28/18, 9:32 AM, "R-help on behalf of orlin mitov via R-help" 
<r-help-boun...@r-project.org on behalf of r-help@r-project.org> wrote:

    Hello,
      I have no previous experience with R, but had to learn on the fly in the 
past couple of weeks. Basically, what I am trying to do is read a certain 
variable from a series of files and save it as csv-table. The variable has an 
hourly value for each month in a year for the past 20 years and has to be read 
for different geographical locations. So there will be 12 files per year (1 for 
each month) and the values for the variable from each file will be 696 to 744 
(depending on how many days x 24 hours there were in the month).What I achieved 
is to to read the values from all 12 files stored in directory with a function 
and add them as vectors to a lapply-list:
    
    
    
    Myfunction <- function(filename) {
     nc <- nc_open(filename)
     lon <- ncvar_get(nc, "lon")
     lat <- ncvar_get(nc, "lat")
     RW <- ncvar_get(nc, "X")
     HW <- ncvar_get(nc, "Y")
     pt.geo <- c(8.6810 , 50.1143)
     dist <- sqrt( (lon - pt.geo[1])^2 + (lat - pt.geo[2])^2 )
     ind <- which(dist==min(dist, na.rm=TRUE),arr.ind=TRUE)
     sis <- ncvar_get(nc, "SIS", start=c(ind[1],ind[2],1), count=c(1,1,-1))
     vec <- c(sis)
    }
    
    filenames <- list.files(path = "C:/Users/Desktop/VD/Solardaten/NC", pattern 
= "nc", full.names = TRUE)
     output <- lapply(filenames, Myfunction)
    
    
    
    And here start my problems with saving "output" as a csv table. Output 
would contain 12 vectors of different lenght.I want to have them as 12 columns 
(1x per month) in Excel and each column should have as many row-entries as 
there are values for this month.Whatever I tried with write.table I was not 
able to achieve this (tried converting the output to a matrix, also no 
successes).Please help! Or should I be trying to have the 12 elements as data 
frames and not vectors?
    This is how I want the table for each year to look - 12 columns and all the 
respective values in the rows (column names I can add by myself):
    Best regardsOrlin
    
    

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to