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