按数字列出索引和一些元素NULL,如何转换为数据帧



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

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

某些索引(序号(未定义。

我想转换成数据帧,如下所示:

1  5
2  NA
3  a
4  NA
5  NA
6  8
...

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

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

解释:我们首先使用lapply迭代所有元素。在匿名函数部分,我们试图找到null值,只要找到null值就用NA替换。一旦列表null值被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)

备用使用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

相关内容

  • 没有找到相关文章

最新更新