[R] Matrix to list
Marc Schwartz
marc_schwartz at me.com
Fri Sep 3 15:01:37 CEST 2010
On Sep 3, 2010, at 7:48 AM, Ron Michael wrote:
> Dear all, suppose I have following matrix:
>
>> mat <- matrix(rnorm(25), 5)
>>
>> mat
> [,1] [,2] [,3] [,4] [,5]
> [1,] 0.97056228 -1.3278509 -0.73511792 2.1650629 -0.4411997
> [2,] 0.58613700 -0.2559899 -1.18334248 -1.4990907 1.8138846
> [3,] -1.03333313 2.0227887 0.89622681 0.6483973 -1.5523283
> [4,] 0.38968833 0.2490004 -0.02301061 -0.2705150 -0.9237268
> [5,] 0.03306289 -0.4022751 -0.44404905 -1.6810542 -0.1016683
>
> Now from "mat" I would like to create a "list" object where i-th column of "mat" will represent i-th element of that list object.
>
> I am looking for some way to avoid for loop. It will be really helpful if somebody points me on that.
>
> Thanks,
Try this:
set.seed(1)
mat <- matrix(rnorm(25), 5)
> mat
[,1] [,2] [,3] [,4] [,5]
[1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 0.91897737
[2,] 0.1836433 0.4874291 0.3898432 -0.01619026 0.78213630
[3,] -0.8356286 0.7383247 -0.6212406 0.94383621 0.07456498
[4,] 1.5952808 0.5757814 -2.2146999 0.82122120 -1.98935170
[5,] 0.3295078 -0.3053884 1.1249309 0.59390132 0.61982575
# Coerce 'mat' to a data frame, then to a 'normal' list
> as.list(as.data.frame(mat))
$V1
[1] -0.6264538 0.1836433 -0.8356286 1.5952808 0.3295078
$V2
[1] -0.8204684 0.4874291 0.7383247 0.5757814 -0.3053884
$V3
[1] 1.5117812 0.3898432 -0.6212406 -2.2146999 1.1249309
$V4
[1] -0.04493361 -0.01619026 0.94383621 0.82122120 0.59390132
$V5
[1] 0.91897737 0.78213630 0.07456498 -1.98935170 0.61982575
You can argue that the coercion to a list is redundant, since a data frame is a list, but it may depend upon what you then want to do with the data.
HTH,
Marc Schwartz
More information about the R-help
mailing list