[R] Manipulation of data.frame into an array

Gerrit Eichner Gerr|t@E|chner @end|ng |rom m@th@un|-g|e@@en@de
Thu May 24 17:10:38 CEST 2018


Why not use as.matrix(Imp) in this case?

  Regards  --  Gerrit

Am 24.05.2018 um 17:04 schrieb Bert Gunter:
> 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]]
> 
> ______________________________________________
> 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.
>




More information about the R-help mailing list