Hello,
Try the following.
class(d[3][[1]])
dim(d[3][[1]])
(d2 <- cbind(d[1:2], d[3][[1]]))
dim(d2)
Funny how the original names of 'm' are retrieved.
Rui Barradas
Em 06-09-2012 18:28, Bert Gunter escreveu:
On Thu, Sep 6, 2012 at 10:20 AM, David Winsemius <[email protected]> wrote:
<snipped>
I guess this means you are not the one performing the d$c <- m step? If you
were under control of that step, you can get different (and more to your liking)
behavior with 'cbind.data.frame':
Correct. d is given to me already, as described. I constructed it in
my post only to provide an example of what it might look like. I
apologize for evidently being unclear about this (and I tried real
hard ... sigh....).
-- Bert
cbind(d, m)
a b x y
1 1 4 a d
2 2 5 b e
3 3 6 c f
ncol( cbind(d, m) )
[1] 4
Now what I wish to do is programmatically convert d to a 4 column
frame with names c("a","b","x","y"). Of course:
1. The column classes/modes must be preserved (character going to
factor and numeric remaining numeric).
2. I assume that I do not know a priori which of d's
components/columns are matrices and which are vectors.
3. There may be many more columns which are vectors or matrix than
just the three in this little example.
I can easily and sensibly accomplish these 3 tasks, but the problem is
that I run afoul of data frame column naming procedures in doing so,
about which the data.frame Help page says rather enigmatically:
"How the names of the data frame are created is complex, and the rest
of this paragraph is only the basic story." Indeed!
(This, of course, is shorthand for "Go look at the source if you want
to know!" )
Anyway, AFAICT from the Help, any "simple" approach to conversion
using data.frame results in "c.x" and "c.y" for the names of the last
two columns. I **can** get what I want by explicitly constructing the
vector of names via the following ugly hack; my question is, can it be
improved?
dd <- do.call(data.frame,d)
dd
a b c.x c.y
1 1 4 a d
2 2 5 b e
3 3 6 c f
ncol(dd)
[1] 4
cnames <- sapply(d,colnames)
cnames
$a
NULL
$b
NULL
$c
[1] "x" "y"
names(dd) <- unlist(ifelse(sapply(cnames,is.null),names(d),cnames))
##Yuck!
dd
a b x y
1 1 4 a d
2 2 5 b e
3 3 6 c f
Cheers to all,
Bert
--
Bert Gunter
Genentech Nonclinical Biostatistics
Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
______________________________________________
[email protected] 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.
David Winsemius, MD
Alameda, CA, USA
______________________________________________
[email protected] 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.