On Jun 17, 2009, at 7:52 AM, Nick Angelou wrote:
I have a problem with dynamic appending to a list. Here is the list
variable:
clusters <- vector("list", 0)
library(fortunes)
fortune("dog")
I would suggest that referring to a character vector as a "list", and
then also calling an element in that vector "list" is akin to calling
your cat, "dog", and then calling its tail, "dog", as well.
I extended in the function below:
cluster <- function (pair, clusters)
{
found <- FALSE
for (i in length(clusters))
{
if (length(intersect(pair, clusters[i])) > 0)
{
clusters[i] <- union(clusters[i], pair)
found <- TRUE
}
}
if (!found)
{
clusters <- list(clusters, as.vector(pair))
So the first time cluster() is called, it would need to handle a
vector correctly, but now you have changed clusters to be a list and
the second call to clusters will need to handle a list correctly.
}
}
The function is executed in a loop:
for (i in 1:nrow(adjMatrix))
{
for (j in 1:nrow(adjMatrix))
{
if ((i != j) && adjMatrix[i,j] >0) # the matrix element has to be
non-zero
in order to be clustered
{
cat(rownames(adjMatrix)[i], colnames(adjMatrix)[j], "\n")
cluster(as.vector(c(rownames(adjMatrix)[i], colnames(adjMatrix)
[j])),
clusters)
}
}
}
But the list variable remains empty (i.e. length(clusters) = 0) even
though
it should not. Somehow the dynamic extension of the list does not
work in
this case. Any suggestions?
Use appropriate naming and do not conflate "vector" with "list". They
need different functions to properly access elements or extend their
lengths.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
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.