/ / zwraca listę w kolumnie w data.table - r, data.table

zwraca listę w kolumnie w data.table - r, data.table

Mam data.table w R i szukam do obliczenia listy na podstawie wartości wierszy za pomocą data.tables. "Próbowałem obecnie poniższy kod jako przykład

library("data.table")
dt <- data.table (data.frame(name = c("A","B","C")), num = c(10,20,30))
dt [,seq := list(replicate(5,num)),by = .I]

Jednak nie generuje listy, ale zamiast tego powtarza wartość w num kolumna do seq kolumna. Jak pokazano niżej

name     num    seq
A         10     10
B         20     20
C         30     30

Oczekiwany wynik to

name     num    seq
A         10     list(10, 10, 10, 10, 10)
B         20     list(20, 20, 20, 20, 20)
C         30     list(30, 30, 30, 30, 30)

Jak mam to załatwić?

Odpowiedzi:

2 dla odpowiedzi № 1

Dzięki @Frank i @David odpowiedź brzmi

dt [,seq2 := list(list(replicate(5,num))), by = 1:nrow(dt)]

pierwotnie spowodować by = .I cicho nic nie robi.

Alternatywnie możesz wykonać następujące czynności, ponieważ lepiej nie wykonywać operacji wierszowych.

dt[, res := transpose(replicate(5, num, simplify = FALSE))]

W innym kierunku, Jeśli chcesz użyć dplyr

dt %>% rowwise() %>% mutate(seq = list(rep(num, 5)))