on 07/23/2008 08:23 AM Michael Friendly wrote:
For a function that takes an argument as a list of lists of parameters, I'd like to be able to convert that
to a data.frame and vice versa, but can't quite figure out how.

pats <- list(structure(list(shape = 0, shape.col = "black", shape.lty = 1,
   cell.fill = "white", back.fill = "white", label = 1, label.size = 1,
ref.col = "gray80", ref.grid = "yes", scale.max = 100), .Names = c("shape",
"shape.col", "shape.lty", "cell.fill", "back.fill", "label",
"label.size", "ref.col", "ref.grid", "scale.max")), structure(list(
   shape = 0, shape.col = "black", shape.lty = 1, cell.fill = "pink",
   back.fill = "white", label = 1, label.size = 1, ref.col = "gray80",
   ref.grid = "yes", scale.max = 100), .Names = c("shape", "shape.col",
"shape.lty", "cell.fill", "back.fill", "label", "label.size",
"ref.col", "ref.grid", "scale.max")), structure(list(shape = 0,
shape.col = "black", shape.lty = 1, cell.fill = "red", back.fill = "white",
   label = 1, label.size = 1, ref.col = "gray80", ref.grid = "yes",
   scale.max = 100), .Names = c("shape", "shape.col", "shape.lty",
"cell.fill", "back.fill", "label", "label.size", "ref.col", "ref.grid",
"scale.max")))

So, I want pats.df to have 10 columns,
c("shape",  "shape.col", "shape.lty", "cell.fill", "back.fill", "label",
"label.size", "ref.col", "ref.grid", "scale.max"), and 3 rows for this example.

Given pats.df, I'd want to turn that back to pats.

thanks for any help,
-Michael

Michael,

One approach for the first issue:

> do.call(rbind, lapply(pats, data.frame))
  shape shape.col shape.lty cell.fill back.fill label label.size
1     0     black         1     white     white     1          1
2     0     black         1      pink     white     1          1
3     0     black         1       red     white     1          1
  ref.col ref.grid scale.max
1  gray80      yes       100
2  gray80      yes       100
3  gray80      yes       100


Given that:

> lapply(seq(along = rownames(pats.df)),
         function(i) as.list(pats.df[i, ]))
[[1]]
[[1]]$shape
[1] 0

[[1]]$shape.col
[1] black
Levels: black

[[1]]$shape.lty
[1] 1

[[1]]$cell.fill
[1] white
Levels: white pink red

[[1]]$back.fill
[1] white
Levels: white

[[1]]$label
[1] 1

[[1]]$label.size
[1] 1

[[1]]$ref.col
[1] gray80
Levels: gray80

[[1]]$ref.grid
[1] yes
Levels: yes

[[1]]$scale.max
[1] 100


[[2]]
[[2]]$shape
[1] 0

[[2]]$shape.col
[1] black
Levels: black

[[2]]$shape.lty
[1] 1

[[2]]$cell.fill
[1] pink
Levels: white pink red

[[2]]$back.fill
[1] white
Levels: white

[[2]]$label
[1] 1

[[2]]$label.size
[1] 1

[[2]]$ref.col
[1] gray80
Levels: gray80

[[2]]$ref.grid
[1] yes
Levels: yes

[[2]]$scale.max
[1] 100


[[3]]
[[3]]$shape
[1] 0

[[3]]$shape.col
[1] black
Levels: black

[[3]]$shape.lty
[1] 1

[[3]]$cell.fill
[1] red
Levels: white pink red

[[3]]$back.fill
[1] white
Levels: white

[[3]]$label
[1] 1

[[3]]$label.size
[1] 1

[[3]]$ref.col
[1] gray80
Levels: gray80

[[3]]$ref.grid
[1] yes
Levels: yes

[[3]]$scale.max
[1] 100



HTH,

Marc Schwartz

______________________________________________
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