[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