У меня есть список списков, например:
x <-list()
x[[1]] <- c('97', '342', '333')
x[[2]] <- c('97','555','556','742','888')
x[[3]] <- c ('100', '442', '443', '444', '445','446')
Первое число в каждом списке (97, 97, 100) относится к узлу в дереве, а следующие числа относятся к связанным признакам с этим узлом.
Моя цель - создать фрейм данных, который выглядит следующим образом:
df= data.frame(node = c('97','97','97','97','97','97','100','100','100','100','100'),
trait = c('342','333','555','556','742','888','442','443','444','445','446'))
, где каждая черта имеет свой соответствующий узел.
Я думаю, что первое, что мне нужно сделать, - это преобразовать список списков в один фрейм данных. Я пытался сделать это, используя:
do.call(rbind,x)
, но это повторяет значения в x [[1]] и x [[2]], чтобы соответствовать длине x [[3]]. Я также попытался использовать:
dt_list <- map(x, as.data.table)
dt <- rbindlist(dt_list, fill = TRUE, idcol = T)
Что, я думаю, приближает меня, но я все еще не уверен, как присвоить значение первого узла соответствующим значениям признаков. Я знаю, что это, вероятно, простая задача, но это ставит меня в тупик сегодня!