我有一個列表(將稱爲「子列表」,以避免混淆)包含命名元素。並非所有子列表都包含所有命名元素。我想補充缺失元素的子列表,如NA
。增加子列表中缺失元素列表的子列表NA
實施例:
l <- list(list(a = 1, b = 2, c = 3),
list(a = 4, b = 5, c = 6),
list(a = 7, b = 8),
list(a = 9, c = 10))
如可以看到的,在第三和第四子列表分別缺少c
和b
元件。我想這些元素被擴充爲NA
這些子列表,即:
res <- list(list(a = 1, b = 2, c = 3),
list(a = 4, b = 5, c = 6),
list(a = 7, b = 8, c = NA),
list(a = 9, b = NA, c = 10))
在現實中,如果這使得它變得更容易,每個子列表中只缺少最後k
元素(即我沒有的情況如第四個子列表中缺少一箇中間元素b
),但我覺得我們在這個時候,讓我們找到一個通用的解決方案。
更新: 針對此特定場景獲得3個極好的解決方案,其中子列表元素爲int
s。但是元素可以是chr
,甚至可以是列表!例如: -
l <- list(list(a = list(1,2), b = 2, c = 3),
list(b = 5, c = 6),
list(a = list(5,6), b = 8),
list(a = list(7,8), c = 10))
的a
元素是一個列表,應該留在res
列表的方式。如果它丟失了,我想一個NA
,像往常一樣:
res <- list(list(a = list(1,2), b = 2, c = 3),
list(a = NA, b = 5, c = 6),
list(a = list(5,6), b = 8, c = NA),
list(a = list(7,8), b = NA, c = 10))
威爾普,這變成了一個變色龍的問題,所以我走了。順便說一句,你還應該爲你的新輸入顯示你想要的輸出。 –
用「字符」對子列表進行子集設置可以在不存在名稱的情況下返回NULL,即開始可以是nms = unique(unlist(lapply(l,names))); lapply(l,「[」,nms)「,然後,恢復」名稱「並替換NULL值 –