[R] Manipulation of data.frame into an array

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Thu May 24 17:04:30 CEST 2018


This is one of those instances where a less superficial knowledge of R's
technical details comes in really handy.

What you need to do is convert the data frame to a single (numeric) vector
for, e.g. a matrix() call. This can be easily done by noting that a data
frame is also a list and using do.call():

## imp is the data frame:

do.call(c,imp)

 X11  X12  X13  X14  X15  X16  X17  X18  X19 X110 X111 X112 X113 X114
   1    2    1    2    1    2    1    2    1    2    1    2    1    2
X115 X116  X21  X22  X23  X24  X25  X26  X27  X28  X29 X210 X211 X212
   1    2    0    1    0    1    1    1    0    1    0    1    0    1
X213 X214 X215 X216   Y1   Y2   Y3   Y4   Y5   Y6   Y7   Y8   Y9  Y10
   1    1    0    1    1    2    3    4    5    6    7    8    1    2
 Y11  Y12  Y13  Y14  Y15  Y16
   3    4    5    6    7    8

So, e.g. for a 3 column matrix:

> matrix(do.call(c,imp), ncol=3)
      [,1] [,2] [,3]
 [1,]    1    0    1
 [2,]    2    1    2
 [3,]    1    0    3
 [4,]    2    1    4
 [5,]    1    1    5
 [6,]    2    1    6
 [7,]    1    0    7
 [8,]    2    1    8
 [9,]    1    0    1
[10,]    2    1    2
[11,]    1    0    3
[12,]    2    1    4
[13,]    1    1    5
[14,]    2    1    6
[15,]    1    0    7
[16,]    2    1    8

Cheers,
Bert



Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )

On Thu, May 24, 2018 at 7:46 AM, Ioanna Ioannou <ii54250 using msn.com> wrote:

> Hello everyone,
>
>
>  I want to transform a data.frame into an array (lets call it mydata),
> where: mydata[[1]] is the first imputed dataset...and for each mydata[[d]],
> the first p columns are covariates X, and the last one is the outcome Y.
>
>
> Lets assume a simple data.frame:
>
>
> Imputed = data.frame( X1 = c(1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2),
>
>                                           X2 = c(0,1,0,1,1,1,0,1,
> 0,1,0,1,1,1,0,1),
>
>                                            Y   =
> c(1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8))
>
> The first 8 have been obtained by the first imputation and the later 8 by
> the 2nd.
>
>
> Can you help me please?
>
>
> Best,
>
> ioanna
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>

	[[alternative HTML version deleted]]




More information about the R-help mailing list