[R] automatically generating and accessing data frames of varying dimensions
Drescher, Michael (MNR)
michael.drescher at ontario.ca
Fri Jul 13 01:19:26 CEST 2007
Hi All,
I want to automatically generate a number of data frames, each with an
automatically generated name and an automatically generated number of
rows. The number of rows has been calculated before and is different for
all data frames (e.g. c(4,5,2)). The number of columns is known a priori
and the same for all data frames (e.g. c(3,3,3)). The resulting data
frames could look something like this:
> auto.data.1
X1 X2 X3
1 0 0 0
2 0 0 0
3 0 0 0
4 0 0 0
> auto.data.2
X1 X2 X3
1 0 0 0
2 0 0 0
3 0 0 0
4 0 0 0
5 0 0 0
> auto.data.3
X1 X2 X3
1 0 0 0
2 0 0 0
Later, I want to fill the elements of the data frames with values read
from somewhere else, automatically looping through the previously
generated data frames.
I know that I can automatically generate variables with the right number
of elements with something like this:
> auto.length <- c(12,15,6)
> for(i in 1:3) {
+ nam <- paste("auto.data",i, sep=".")
+ assign(nam, 1:auto.length[i])
+ }
> auto.data.1
[1] 1 2 3 4 5 6 7 8 9 10 11 12
> auto.data.2
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> auto.data.3
[1] 1 2 3 4 5 6
But how do I turn these variables into data frames or give them any
dimensions? Any commands such as 'as.matrix', 'data.frame', or 'dim' do
not seem to work. I also seem not to be able to access the variables
with something like "auto.data.i" since:
> auto.data.i
Error: object "auto.data.i" not found
Thus, how would I be able to automatically write to the elements of the
data frames later in a loop such as ...
> for(i in 1:3) {
+ for(j in 1:nrow(auto.data.i)) { ### this obviously does not work
since 'Error in nrow(auto.data.i) : object "auto.data.i" not found'
+ for(k in 1:ncol(auto.data.i)) {
+ auto.data.i[j,k] <- 'some value'
+ }}}
Thanks a bunch for all your help.
Best, Michael
Michael Drescher
Ontario Forest Research Institute
Ontario Ministry of Natural Resources
1235 Queen St East
Sault Ste Marie, ON, P6A 2E3
Tel: (705) 946-7406
Fax: (705) 946-2030
More information about the R-help
mailing list