Split matrix or dataframe into list by columns or by rows

split_bycol(x, idx = NULL, as.list = FALSE)

split_byrow(x, idx = NULL)

Arguments

x

Matrix or dataframe.

idx

Index to split by. If NULL, split by columns or rows.

as.list

If TRUE, return list of dataframes. If FALSE, return list of matrices.

Examples

x <- mtcars[1:3, 1:6]
x  |> split_bycol()
#> [[1]]
#>                mpg
#> Mazda RX4     21.0
#> Mazda RX4 Wag 21.0
#> Datsun 710    22.8
#> 
#> [[2]]
#>               cyl
#> Mazda RX4       6
#> Mazda RX4 Wag   6
#> Datsun 710      4
#> 
#> [[3]]
#>               disp
#> Mazda RX4      160
#> Mazda RX4 Wag  160
#> Datsun 710     108
#> 
#> [[4]]
#>                hp
#> Mazda RX4     110
#> Mazda RX4 Wag 110
#> Datsun 710     93
#> 
#> [[5]]
#>               drat
#> Mazda RX4     3.90
#> Mazda RX4 Wag 3.90
#> Datsun 710    3.85
#> 
#> [[6]]
#>                  wt
#> Mazda RX4     2.620
#> Mazda RX4 Wag 2.875
#> Datsun 710    2.320
#> 
x  |> split_bycol(as.list=TRUE)
#> $mpg
#> [1] 21.0 21.0 22.8
#> 
#> $cyl
#> [1] 6 6 4
#> 
#> $disp
#> [1] 160 160 108
#> 
#> $hp
#> [1] 110 110  93
#> 
#> $drat
#> [1] 3.90 3.90 3.85
#> 
#> $wt
#> [1] 2.620 2.875 2.320
#> 
x  |> split_bycol(as.list=FALSE)
#> [[1]]
#>                mpg
#> Mazda RX4     21.0
#> Mazda RX4 Wag 21.0
#> Datsun 710    22.8
#> 
#> [[2]]
#>               cyl
#> Mazda RX4       6
#> Mazda RX4 Wag   6
#> Datsun 710      4
#> 
#> [[3]]
#>               disp
#> Mazda RX4      160
#> Mazda RX4 Wag  160
#> Datsun 710     108
#> 
#> [[4]]
#>                hp
#> Mazda RX4     110
#> Mazda RX4 Wag 110
#> Datsun 710     93
#> 
#> [[5]]
#>               drat
#> Mazda RX4     3.90
#> Mazda RX4 Wag 3.90
#> Datsun 710    3.85
#> 
#> [[6]]
#>                  wt
#> Mazda RX4     2.620
#> Mazda RX4 Wag 2.875
#> Datsun 710    2.320
#> 
x  |> split_bycol(idx=c(1,1,1,2,2,3,3,3))
#> [[1]]
#>                mpg cyl disp
#> Mazda RX4     21.0   6  160
#> Mazda RX4 Wag 21.0   6  160
#> Datsun 710    22.8   4  108
#> 
#> [[2]]
#>                hp drat
#> Mazda RX4     110 3.90
#> Mazda RX4 Wag 110 3.90
#> Datsun 710     93 3.85
#> 
#> [[3]]
#>                  wt
#> Mazda RX4     2.620
#> Mazda RX4 Wag 2.875
#> Datsun 710    2.320
#> 
## x  |> split_bycol(idx=c(1,1,7,2,2,3,3,3)) ## Gives error

x <- mtcars[1:6, 1:6]
x  |> split_byrow()
#> $`1`
#>           mpg cyl disp  hp drat   wt
#> Mazda RX4  21   6  160 110  3.9 2.62
#> 
#> $`2`
#>               mpg cyl disp  hp drat    wt
#> Mazda RX4 Wag  21   6  160 110  3.9 2.875
#> 
#> $`3`
#>             mpg cyl disp hp drat   wt
#> Datsun 710 22.8   4  108 93 3.85 2.32
#> 
#> $`4`
#>                 mpg cyl disp  hp drat    wt
#> Hornet 4 Drive 21.4   6  258 110 3.08 3.215
#> 
#> $`5`
#>                    mpg cyl disp  hp drat   wt
#> Hornet Sportabout 18.7   8  360 175 3.15 3.44
#> 
#> $`6`
#>          mpg cyl disp  hp drat   wt
#> Valiant 18.1   6  225 105 2.76 3.46
#> 
x  |> split_byrow(idx=c(1,1,2,2))
#> $`1`
#>                    mpg cyl disp  hp drat    wt
#> Mazda RX4         21.0   6  160 110 3.90 2.620
#> Mazda RX4 Wag     21.0   6  160 110 3.90 2.875
#> Hornet Sportabout 18.7   8  360 175 3.15 3.440
#> Valiant           18.1   6  225 105 2.76 3.460
#> 
#> $`2`
#>                 mpg cyl disp  hp drat    wt
#> Datsun 710     22.8   4  108  93 3.85 2.320
#> Hornet 4 Drive 21.4   6  258 110 3.08 3.215
#> 

m <- as.matrix(x)
u <- x |> split_byrow(idx=c(1,1,2,2))
y <- m |> split_byrow(idx=c(1,1,2,2))