Я упорядочил свои данные в data.table
и создал столбец livar
, который содержит список или иногда список со списками. Каждая строка представляет несколько записей для уникальной записи. Столбец livar
агрегирует все наблюдения переменной (больше не data.table
) уникальной записи в списке или когда имеется несколько записей для записи, а затем в списке списков.
Теперь я хочу проверить, совпадают ли все списки одной строки в столбце livar
. В представленном коде я ожидал, что первая строка в столбце same
будет FALSE
, а вторая и третья - TRUE
. Как показывают следующие строки, код работает, как я ожидал, но не в контексте data.table
. Кто-нибудь может здесь помочь?
a <- c(123456, NA, 456789, NA, NA)
b <- c(NA, NA)
c <- c(123456, NA, 987654, NA, NA)
d <- c(123456, NA, 987654, NA, NA)
e <- c(NA, NA)
li1 <- list(a, b)
li2 <- list(c, d)
DT <- data.table(c(1,2,3))
DT[, livar := list(li1, li2, e)]
DT[, same := length(unique(livar))==1] # FALSE
length(unique(li1))==1 # FALSE
length(unique(li2))==1 # TRUE
length(unique(e))==1 # TRUE
length(unique(c(NA, NA)))==1 # TRUE