On Sep 2, 2009, at 8:47 PM, Richard M. Heiberger wrote:

Almost certainly, abind is what you need for the task.

Please dput() your matlab objects and send that to the list.
That will make your example reproducible.

Rich

From the documentation and behavior, abind seems to really not want to work on lists.

Here is a dput of some list arrays that demonstrate the problem.

> data1
, , 1

    [,1]      [,2]
foo 1         4
bar Numeric,3 Numeric,3
baz "quux"    "n"

> dput(data1)
structure(list(1L, c(3, 4, 5), "quux", 4L, c(3, 5, 9), "n"), .Dim = c(3L,
2L, 1L), .Dimnames = list(c("foo", "bar", "baz"), NULL, NULL))

> data2
, , 1

    [,1]
foo 1
bar Numeric,5
baz "qux"

> dput(data2)
structure(list(1, c(2, 3, 4, 6, 9), "qux"), .Dim = c(3L, 1L,
1L), .Dimnames = list(c("foo", "bar", "baz"), NULL, NULL))

abind() decides that it wants to coerce all lists into character, among other failures (e.g. how did "quux" wind up in the second row?:)

> library(abind)
> abind(list(data1,data2), along=2, force.array=FALSE)
, , 1

    [,1] [,2]   [,3]
foo "1"  "5"    "3"
bar "3"  "quux" "5"
baz "4"  "4"    "9"

What I want to happen:

> goal
, , 1

     [,1]      [,2]      [,3]
[1,] 1         4         1
[2,] Numeric,3 Numeric,3 Numeric,5
[3,] "quux"    "n"       "qux"

> dput(goal)
structure(list(1L, c(3, 4, 5), "quux", 4L, c(3, 5, 9), "n", 1,
    c(2, 3, 4, 6, 9), "qux"), .Dim = c(3L, 3L, 1L))


--Peter

______________________________________________
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