Делаем это
library(tidyverse)
df <- tibble(x = runif(5), y = runif(n=25) %>% matrix(nrow = 5, ncol = 5))
Я получаю
# A tibble: 5 x 2
x y[,1] [,2] [,3] [,4] [,5]
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0.0458 0.577 0.325 0.0186 0.354 0.735
2 0.817 0.611 0.830 0.0421 0.0320 0.666
3 0.618 0.968 0.611 0.466 0.733 0.0458
4 0.335 0.797 0.279 0.635 0.572 0.125
5 0.837 0.483 0.965 0.831 0.900 0.674
Это фрейм данных 5 x 2. Второй столбец y
представляет собой матрицу. Я хотел бы, чтобы это был фрейм данных 5 x 6, в котором каждый столбец матрицы 5x5 был отдельным столбцом в фрейме данных. 1010 *, но это не работает. Наивная попытка приводит к следующей ошибке.
> unnest(df, y)
Error: Assigned data `map(data[[col]], as_df, col = col)` must be compatible with existing data.
x Existing data has 5 rows.
x Assigned data has 25 rows.
ℹ Only vectors of size 1 are recycled.
Run `rlang::last_error()` to see where the error occurred.
Я что-то упускаю или мне нужно сделать что-то вроде этого?
> bind_cols(x = df$x, as_tibble(df$y))
# A tibble: 5 x 6
x V1 V2 V3 V4 V5
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0.0458 0.577 0.325 0.0186 0.354 0.735
2 0.817 0.611 0.830 0.0421 0.0320 0.666
3 0.618 0.968 0.611 0.466 0.733 0.0458
4 0.335 0.797 0.279 0.635 0.572 0.125
5 0.837 0.483 0.965 0.831 0.900 0.674