[R] merge zoo objects contained in a list
stephen sefick
ssefick at gmail.com
Tue Aug 11 22:11:25 CEST 2009
I would like to merge zoo objects that are stored in a list into one
big zoo object with one index for all of the observations.
I have created the list (74 dataframes) with the code below, and have
tried the do.call(merge, foo) in the call and the output is not what I
expected. Any help would be greatly appreciated.
Stephen Sefick
###################################################level logger read
in#############################################
read.ll <- function(path, file.name)
{
if(!require(chron))
stop("Package 'chron' required but not installed.")
if(!require(zoo))
stop("Package 'zoo' required but not installed.")
list.of.files <- list.files(path)
length.files <- length(list.of.files)
df <- vector(mode = "list", length = length.files)
fnames <- paste(path, list.of.files, sep = "/")
for(i in seq(along = list.of.files))
{
df[[i]] <- read.table(fnames[i], skip=45, as.is=TRUE)
#lengths of the dataframes because the last to lines of the .lev
file are garbage#
length.1 <- length(df[[i]][,1])
length.2 <- length(df[[i]][,1])-1
#remove the garbage
df[[i]] <- df[[i]][-c(length.1, length.2),]
#make chron class for datetime
df[[i]] <- data.frame(chron(as.character(df[[i]][,1]),
as.character(df[[i]][,2]), format=c(dates="Y/m/d", times="H:M:S")),
as.numeric(df[[i]][,3]), as.numeric(df[[i]][,4]),
as.factor(list.of.files[[i]]))
#change names of columns
names(df[[i]]) <- c("datetime", "level", "temp", "site")
#make zoo object
df[[i]] <- zoo(df[[i]], df[[i]][,"datetime"])
}
#merge all of the lists into one huge dataframe
merged <- do.call(merge, df)
return(merged)
}
--
Stephen Sefick
Let's not spend our time and resources thinking about things that are
so little or so large that all they really do for us is puff us up and
make us feel like gods. We are mammals, and have not exhausted the
annoying little problems of being mammals.
-K. Mullis
More information about the R-help
mailing list