[R] (no subject)

jim holtman jholtman at gmail.com
Fri Jul 13 03:55:44 CEST 2007


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) <michael.drescher at ontario.ca> 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 at 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?



More information about the R-help mailing list