Как я могу создать тиббл со столбцом типа вектор? - PullRequest
1 голос
/ 20 апреля 2020

Скажем, у меня есть столбик, который выглядит следующим образом

tib1 < tibble(x = 1:5, y = 0)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   5 obs. of  2 variables:
 $ x: int  1 2 3 4 5
 $ y: num  0 0 0 0 0

Как мне получить столбец y, чтобы он выглядел так:

$ x: int 1 2 3 4 5
$ y: vector c(1,0,0,0,0) c(0,1,0,0,0) c(0,0,1,0,0) ...

Была бы признательна за помощь.

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Мы можем использовать tabulate и создать столбец list на основе значения 'x'

library(dplyr)
library(purrr)
tib1 %>% 
     mutate(y = map(x, ~ tabulate(.x,  max(x)))) 
0 голосов
/ 20 апреля 2020

В базе R

library(tibble)
n <- 5
tib1 <- tibble(x = 1:n, y = split(diag(n), rep(1:n, n)))

даст

> tib1$x
[1] 1 2 3 4 5
> tib1$y
$`1`
[1] 1 0 0 0 0

$`2`
[1] 0 1 0 0 0

$`3`
[1] 0 0 1 0 0

$`4`
[1] 0 0 0 1 0

$`5`
[1] 0 0 0 0 1
...