Is this what you want to do: > auto.length <- c(12,15,6) > for(i in 1:3) { + nam <- paste("auto.data",i, sep=".") + assign(nam, as.data.frame(matrix(1:auto.length[i], ncol=3))) + } > auto.data.1 V1 V2 V3 1 1 5 9 2 2 6 10 3 3 7 11 4 4 8 12 > auto.data.2 V1 V2 V3 1 1 6 11 2 2 7 12 3 3 8 13 4 4 9 14 5 5 10 15 > # output the data > for(i in 1:3){ + cat(x <- paste('auto.data.', i, sep=''), '\n') + print(get(x)) + } auto.data.1 V1 V2 V3 1 1 5 9 2 2 6 10 3 3 7 11 4 4 8 12 auto.data.2 V1 V2 V3 1 1 6 11 2 2 7 12 3 3 8 13 4 4 9 14 5 5 10 15 auto.data.3 V1 V2 V3 1 1 3 5 2 2 4 6 >
On 7/12/07, Drescher, Michael (MNR) <[EMAIL PROTECTED]> wrote: > 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 > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > 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. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem you are trying to solve? ______________________________________________ R-help@stat.math.ethz.ch mailing list 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.