R 列表索引按数字和某些元素为空,如何转换为数据帧?

R 列表索引按数字和某些元素为空,如何转换为数据帧?,r,R,在R程序中,列表长度是未知的。它是由for循环生成的。 例如: ls <- list() ls[[1]] <- 5 ls[[3]] <- a ls[[6]] <- 8 .... 附加问题:如何获取此列表的序号范围?基本R方法可能是,假设环境中已经存在“ls”: 说明: 我们首先使用lappy遍历所有元素,在匿名函数部分,我们试图找到空值,如果找到空值,我们将替换为NA。一旦列表空值被NA替换,我们就使用do.call中的“rbind”按行绑定它们。要将最后一部分作为序列

在R程序中,列表长度是未知的。它是由for循环生成的。 例如:

ls <- list()
ls[[1]] <- 5
ls[[3]] <- a
ls[[6]] <- 8
....

附加问题:如何获取此列表的序号范围?

基本R方法可能是,假设环境中已经存在“ls”:

说明: 我们首先使用lappy遍历所有元素,在匿名函数部分,我们试图找到空值,如果找到空值,我们将替换为NA。一旦列表空值被NA替换,我们就使用do.call中的“rbind”按行绑定它们。要将最后一部分作为序列,我们可以使用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)
输出

    > dfs
   #   col1 col2
   # 1    3    1
   # 2   NA    2
   # 3    6    3
   # 4   NA    4
   # 5   NA    5
   # 6    8    6
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