In fact there should be just one level of nesting but the top level
object must be a matrix, not a list, since the matrices that should be
embedded in it must be grouped after their nrow _and_ ncol - thus the
container object must be two-dimensional, a matrix. The only question is
how to get rid of the "list of lists" level between the database and the
matrices - if I remove the [[1]] everywhere in the code I get an error.
But since it does work with this intermediate "list of lists" level, I
prefer not to mess around in the code until everything else is done.
Petr PIKAL schrieb:
Hm
I still suppose that you do not need matrix as a top level object. If you
are sure there is only one level of nesting, e.g. in each node of the list
there is only one level of saved matrices, you can get summary
information from str, length and/or summary.
lll<-list(a=1, b=2, c=list(a=1,b=2,c=3), d=list(a=1, b=1),
e=list(a=5,b=3, c=4, d=7, e=8))
lapply(lll, length)
$a
[1] 1
$b
[1] 1
$c
[1] 3
$d
[1] 2
$e
[1] 5
sapply(lll, length)
a b c d e
1 1 3 2 5
summary(lll)
Length Class Mode
a 1 -none- numeric
b 1 -none- numeric
c 3 -none- list
d 2 -none- list
e 5 -none- list
Michael Kogan <michael.ko...@gmx.net> napsal dne 20.08.2009 12:48:32:
Thanks, I was already told this solution by somebody (he just forgot to
add the mailing list as CC). Well, the purpose of the whole thing is to
get something like this:
http://home.att.net/~numericana/data/polycount.htm where the numbers in
the table cells give the number of matrices saved in the corresponding
cell. The program looks like this now:
Do you really want the matrices "saved" in corresponding cell? If this
466224664031 is a number of items in one cell and if the item is only one
number you would need >500 GB memory (hope I computed it correctly :-) to
keep only this one cell in memory which I presume you do not have.
If you want just store the number of existing variations which belong to
this cell then you shall rethink your procedures.
Regards
Petr
http://paste.ubuntuusers.de/396117/ It even runs (though errors occur if
I add th process r into the main loop, but I'm still not done with
it...).
Petr PIKAL schrieb:
Hi
No. It is the problem of scoping. AFAIK functions create their own
environment and everything what is assigned inside the function does
not
affect outside objects unless you use <<- assignment operator.
i<-100
ff<-function(x) i<-x
ff(10)
i
[1] 100
fff<-function(x) i<<-x
fff(200)
i
[1] 200
However I would distract you from this practice. Personally I used
such
assignment only when I started with S/R about 10 years ago.
Why do you want a database to be a matrix? It seems to be that list
structure is in that case more flexible and there are *apply functions
for
manipulation with lists. E.g. structure lm(...) results in list and
summary(lm(...)) is again a list with quite complicated structure.
If I understand it correctly, during your computation you will have as
a
result matrices with arbitrary dimensions.
I would make a list
lll<-vector("list", 1)
and in simple loop
for (i in 1:n) {
do any computation here together with sophisticated and complicated
functions and assign results to your list
lll[[1]] <- result of functions which itself can have quite
complicated
structure
}
If you want nested list just add another cycle and use
lll[[i]][[j]] <-some other result.
With choosing appropriate structure of your date you can save yourself
much problems.
Regards
Petr
______________________________________________
R-help@r-project.org 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.