Можно использовать базовый подход R, предполагая, что здесь у вас есть "ls", уже присутствующий в среде:
Объяснение :
Сначала мы перебираем все элементы, используя lapply. В части с анонимной функцией мы пытаемся найти нулевые значения, и там, где есть нулевое значение, мы заменяем на NA. Как только значения NULL в списке заменены на NA, мы связываем их по строкам, используя 'rbind' из do.call. Чтобы получить последнюю часть как последовательность, мы можем использовать либо функцию seq, либо оператор двоеточия для создания последовательности.
dfs <- data.frame(col1 = do.call('rbind', lapply(ls,
function(x)ifelse(is.null(x), NA, x))),
col2 = seq(1,length(ls)), stringsAsFactors = F)
Альтернатива Использование unlist
(вместо do.call и rbind):
dfs <- data.frame(col1 = unlist(lapply(ls,
function(x)ifelse(is.null(x), NA, x))), col2 =
seq(1,length(ls)), stringsAsFactors = F)
выход
> dfs
# col1 col2
# 1 3 1
# 2 NA 2
# 3 6 3
# 4 NA 4
# 5 NA 5
# 6 8 6