You can just as easily access each element in the list using e.g. `path[[1]]`

. You can’t put a set of matrices into an atomic vector and access each element. A matrix is an atomic vector with dimension attributes. I would use the list structure returned by `split`

, it’s what it was designed for. Each list element can hold data of different types and sizes so it’s very versatile and you can use `*apply`

functions to further operate on each element in the list. Example below.

```
# For reproducibile data
set.seed(1)
# Make some data
userid <- rep(1:2,times=4)
data1 <- replicate(8 , paste( sample(letters , 3 ) , collapse = "" ) )
data2 <- sample(10,8)
df <- data.frame( userid , data1 , data2 )
# Split on userid
out <- split( df , f = df$userid )
#$`1`
# userid data1 data2
#1 1 gjn 3
#3 1 yqp 1
#5 1 rjs 6
#7 1 jtw 5
#$`2`
# userid data1 data2
#2 2 xfv 4
#4 2 bfe 10
#6 2 mrx 2
#8 2 fqd 9
```

Access each element using the `[[`

operator like this:

```
out[[1]]
# userid data1 data2
#1 1 gjn 3
#3 1 yqp 1
#5 1 rjs 6
#7 1 jtw 5
```

Or use an `*apply`

function to do further operations on each list element. For instance, to take the mean of the `data2`

column you could use sapply like this:

```
sapply( out , function(x) mean( x$data2 ) )
# 1 2
#3.75 6.25
```