[R] data.frame with a column containing an array

Georg Kindermann Georg@K|nderm@nn @end|ng |rom gmx@@t
Thu May 25 05:52:44 CEST 2023


So is this an expected behavior or is it a bug which should be reported somewhere else?

Thanks!
Georg 
 
 

Gesendet: Dienstag, 09. Mai 2023 um 19:28 Uhr
Von: "Bert Gunter" <bgunter.4567 using gmail.com>
An: "Georg Kindermann" <Georg.Kindermann using gmx.at>
Cc: "Rui Barradas" <ruipbarradas using sapo.pt>, r-help using r-project.org
Betreff: Re: [R] data.frame with a column containing an array

 
 
I think the following may provide a clearer explanation:
 
subs <- c(1,3)
DFA <- data.frame(id = 1:3)
ar <- array(1:12, c(3,2,2))
## yielding
> ar
, , 1

     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

, , 2

     [,1] [,2]
[1,]    7   10
[2,]    8   11
[3,]    9   12
 
## array subscripting gives
> ar[subs,,]
, , 1

     [,1] [,2]
[1,]    1    4
[2,]    3    6

, , 2

     [,1] [,2]
[1,]    7   10
[2,]    9   12
 
## Now with df's
> DFA[["ar"]] <- ar
>
> DFM <- data.frame(id = 1:3)
> DFM[["M"]] <- matrix(1:6, nc =2)
>
> str(DFM)
'data.frame': 3 obs. of  2 variables:
 $ id: int  1 2 3
 $ M : int [1:3, 1:2] 1 2 3 4 5 6
> str(DFA)
'data.frame': 3 obs. of  2 variables:
 $ id: int  1 2 3
 $ ar: int [1:3, 1:2, 1:2] 1 2 3 4 5 6 7 8 9 10 ...
>
> ## But the data frame print method for these give
> DFM  
  id M.1 M.2
1  1   1   4
2  2   2   5
3  3   3   6
> DFA
  id ar.1 ar.2 ar.3 ar.4
1  1    1    4    7   10
2  2    2    5    8   11
3  3    3    6    9   12
>
> ## [.data.frame subscripting gives
> DFA[subs,]
  id ar
1  1  1
3  3  3
> DFM[subs,]
  id M.1 M.2
1  1   1   4
3  3   3   6
>
> ## but  explicit array subscripting of course works
> DFA$ar[match(subs,DFA$id),,]
, , 1

     [,1] [,2]
[1,]    1    4
[2,]    3    6

, , 2

     [,1] [,2]
[1,]    7   10
[2,]    9   12
 
 
Cheers,
Bert 



More information about the R-help mailing list