(1) From files read.zoo can take a character vector of file names as its first argument so:
# create test files Lines <- '"Index","pp" 1951-01-01,22.9 1951-01-02,4.3 1951-01-03,4.6' cat(Lines, file = "testzoo01.csv") cat(Lines, file = "testzoo02.csv") # read.zoo reads the files named in Filenames and merges them library(zoo) Filenames <- dir(pattern = "testzoo.*csv") z <- read.zoo(Filenames, sep = ",", header = TRUE)
which gives this:
> z testzoo01.csv testzoo02.csv 1951-01-01 22.9 22.9 1951-01-02 4.3 4.3 1951-01-03 4.6 4.6
It would be possible to modify the names further if desired by placing names on the Filenames variable, e.g. names(Filenames) <- gsub("testzoo|.csv", "", Filenames), or by modifying the names of the result, e.g. names(z) <- gsub("testzoo|.csv", "", names(z))
(2) From zoo Objects. If they have been read in previously then try this:
# create test objects using Lines and library() statement from above testobj1 <- testobj2 <- read.zoo(textConnection(Lines), header = TRUE, sep = ",") # merge them into a single zoo object zz <- do.call(merge, sapply(ls(pattern = "testobj.*"), get, simplify = FALSE))
which gives this:
> zz testobj1 testobj2 1951-01-01 22.9 22.9 1951-01-02 4.3 4.3 1951-01-03 4.6 4.6
The names of zz could be modified further as in the discussion above.