RE: [R] list of lists question

2004-11-23 Thread Liaw, Andy
 From: Karla Sartor
 
 Hello all,
 As a general programming question I can't seem to figure out 
 how to make 
 a list of lists in R.
 As matrices won't work as they have to be rectangular.
 
 I am sure that there is an easy solution but...
 
 the specific situation is this:
 - I have created a Tukey confidence interval table and have 
 listed the 
 means that are not significantly different
 - then using these not significantly different pairs I have 
 created the 
 groups of means that are not significantly different from each other
 the issue then is that many of these lists are subsets of other lists 
 and I need to check for this.
 
 Below is a little program is illustrate the issue
 
   a=c(1,1,1,1,1)  # generate the first list
   b=c(2,2,2)# generate a second list
   c=c(a,b)   #combine them
   cat(c, \n)# and print
 1 1 1 1 1 2 2 2   #  this is 1-D!!! ahh
   d=list(a,b)# make a list of a and b
   d   #  and print
 [[1]]  #this is exactly 
 what I want, 
 but continue
 [1] 1 1 1 1 1
 
 [[2]]
 [1] 2 2 2
 
   e=list(d,a)   # now on the next 
 iteration I 
 need to add another list to this list of lists
   e # and print
 [[1]]   # ahh all hell has broken 
 loose and this is not what I want
 [[1]][[1]]   #  desired result below
 [1] 1 1 1 1 1
 
 [[1]][[2]]
 [1] 2 2 2
 
 
 [[2]]
 [1] 1 1 1 1 1
 
 -
 desired result
 
 #wrong code but this is what I want to happen
 a=c(1,1,1,1,1,1,1)
 for(i in 1:5) {
 a=list(a,1:5)
 }
 
 output I want is (something like)
 [1] 1 1 1 1 1 1 1
 [2] 1 2 3 4 5
 [3] 1 2 3 4 5
 [4] 1 2 3 4 5
 [5] 1 2 3 4 5
 [6] 1 2 3 4 5
 
 so then I could call cat(a[1]) and get 1 1 1 1 1 1 1 1 and 
 cat(a[2]) and 
 get 1 2 3 4 5
 
 Anyone know the answer (hopefully simple)

Indeed:  Lists are vectors.  You use c() to concatenate vectors, so you also
use it for lists.  E.g.,

 a - list(rep(1, 5))
 for (i in 1:2) a - c(a, list(1:5))
 a
[[1]]
[1] 1 1 1 1 1

[[2]]
[1] 1 2 3 4 5

[[3]]
[1] 1 2 3 4 5

Andy


 
 Cheers,
 
 Karla Sartor
 
 
 
 --
 Karla Sartor
 Montana State University - LRES
 [EMAIL PROTECTED]
 
 __
 [EMAIL PROTECTED] mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 PLEASE do read the posting guide! 
 http://www.R-project.org/posting-guide.html
 


__
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] list of lists question

2004-11-23 Thread Spencer Graves
 Is the following more like what you want: 

a=c(1,1,1,1,1)  # generate the first list
b=c(2,2,2)# generate a second list
d=list(a,b)# make a list of a and b
(
e=c(d,a)
)
[[1]]
[1] 1 1 1 1 1
[[2]]
[1] 2 2 2
[[3]]
[1] 1
[[4]]
[1] 1
[[5]]
[1] 1
[[6]]
[1] 1
[[7]]
[1] 1
 If no, have you read sec. 6 in An Introduction to R [the first 
option available from help.start()]? 

 In this example, note that e[1] is a list with only one 
attributes, namely the vector 1 1 1 1 1;  e[[1]] is not a list but that 
vector itself. 

 hope this helps.  spencer graves
Karla Sartor wrote:
Hello all,
As a general programming question I can't seem to figure out how to 
make a list of lists in R.
As matrices won't work as they have to be rectangular.

I am sure that there is an easy solution but...
the specific situation is this:
- I have created a Tukey confidence interval table and have listed the 
means that are not significantly different
- then using these not significantly different pairs I have created 
the groups of means that are not significantly different from each other
the issue then is that many of these lists are subsets of other lists 
and I need to check for this.

Below is a little program is illustrate the issue
 a=c(1,1,1,1,1)  # generate the first list
 b=c(2,2,2)# generate a second list
 c=c(a,b)   #combine them
 cat(c, \n)# and print
1 1 1 1 1 2 2 2   #  this is 1-D!!! ahh
 d=list(a,b)# make a list of a and b
 d   #  and print
[[1]]  #this is exactly what I 
want, but continue
[1] 1 1 1 1 1

[[2]]
[1] 2 2 2
 e=list(d,a)   # now on the next iteration I 
need to add another list to this list of lists
 e # and print
[[1]]   # ahh all hell has broken 
loose and this is not what I want
[[1]][[1]]   #  desired result below
[1] 1 1 1 1 1

[[1]][[2]]
[1] 2 2 2
[[2]]
[1] 1 1 1 1 1
-
desired result
#wrong code but this is what I want to happen
a=c(1,1,1,1,1,1,1)
for(i in 1:5) {
   a=list(a,1:5)
}
output I want is (something like)
[1] 1 1 1 1 1 1 1
[2] 1 2 3 4 5
[3] 1 2 3 4 5
[4] 1 2 3 4 5
[5] 1 2 3 4 5
[6] 1 2 3 4 5
so then I could call cat(a[1]) and get 1 1 1 1 1 1 1 1 and cat(a[2]) 
and get 1 2 3 4 5

Anyone know the answer (hopefully simple)
Cheers,
Karla Sartor

--
Karla Sartor
Montana State University - LRES
[EMAIL PROTECTED]
__
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! 
http://www.R-project.org/posting-guide.html

--
Spencer Graves, PhD, Senior Development Engineer
O:  (408)938-4420;  mobile:  (408)655-4567
__
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html