On Apr 24, 2009, at 12:16 AM, David Winsemius wrote:

I cannot figure out what you are trying to do, but I'm reasonably sure that the construction:

xxx[[index,index2]] ... is going to fail. If you want to create a two dimensional structure, most people would use either a dataframe or a matrix rather than a list, although lists have the advantage that they do not need to be "pre-dimensioned". If you know what your dimension are in advance they are probably the way to go.

If you want to access multiple "dimensions" of a list, do not use [[ , ]] but rather [[ idx ]] to get the desired first "dimension" and then [ idx2 ] to the right of the expression for the first "dimension" to get or change the second "dimension", although "level" or "depth" might be the better terminology.

m <- list(sin, 1:3, letters[1:3], expression(a+b))
m[[2]][3] # ]
# that "]" shouldn't be there

m[[2]][3] <- 8
m
m[[2]][3]

You have a better chance of getting on target advice if you explain what you want to do rather than showing us code patterned on another language that obviously doesn't work in R.

On Apr 23, 2009, at 10:29 PM, Toby wrote:

I must be going about my idea really backwards. I have functions like so:

Nasa_PART_Bounds <- rbind(Nasa_PART_Bounds, c("Nasa_PART_B1"))
Nasa_PART_B1 <- function(l,u) {
      l[["Nasa_PART_B1", "CYCLOMATIC_COMPLEXITY"]] <- 8
      u[["Nasa_PART_B1", "CYCLOMATIC_COMPLEXITY"]] <- 60
      l[["Nasa_PART_B1", "LOC_TOTAL"]] <- 73
}

Where I add the function names of each "bounds" function to a list,
which later on get called with two variables.

dispatch2 <- function(f, x, y) {
      eval(call(f, x, y))
}

for (i in bounds) {
      bb <- eval(substitute(foo[,1], list(foo=as.name(i))))
      rr <- lapply(bb, dispatch2, lb, ub)
}

However, I don't know how to do this in a better "R" way. I think my C and
pearl experience is showing through... :(

-Toby.


On Thu, Apr 23, 2009 at 8:20 PM, Gabor Grothendieck <ggrothendi...@gmail.com
wrote:

Matrix made from a list:

m <- list(sin, 1:3, letters[1:3], expression(a+b))
dim(m) <- c(2, 2)
dimnames(m) <- list(letters[1:2], LETTERS[1:2])
class(m) # matrix

or

M <- structure(list(sin, 1:3, letters[1:3], expression(a+b)), .Dim = c(2,
2),
.Dimnames = list(c("a", "b"), c("A", "B")))
class(M) # matrix

On Thu, Apr 23, 2009 at 10:03 PM, Toby <tobias.weingart...@gmail.com>
wrote:
I'm trying to figure out how I can get a generalized 2D
list/array/matrix/whatever
working. Seems I can't figure out how to make the variables the right
type.  I
always seem to get some sort of error... out of bounds, wrong type, wrong
dim, etc.
Very confused... :)

x[["some label", "some other index"]] <- 3
x[["some other label", "something else"]] <- 4

I don't know the indexes/label ahead of time... they get generated...
Any
thoughts?


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.

Reply via email to