mylist <- list(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
    123, NULL, 456)

> mylist
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
NULL

[[6]]
NULL

[[7]]
NULL

[[8]]
NULL

[[9]]
NULL

[[10]]
NULL

[[11]]
[1] 123

[[12]]
NULL

[[13]]
[1] 456

我的列表有13个元素,其中11个为空.我想删除它们,但保留非空元素的索引.

mylist2 = mylist[-which(sapply(mylist, is.null))]
> mylist2
[[1]]
[1] 123

[[2]]
[1] 456

这可以很好地删除空元素,但我不希望非空元素被重新索引,也就是说,我希望mylist2看起来像这样,其中非空条目的索引被保留.

> mylist2
[[11]]
[1] 123

[[13]]
[1] 456

推荐答案

最接近的方法是先命名列表元素,然后删除空值.

names(x) <- seq_along(x)

## Using some higher-order convenience functions
Filter(Negate(is.null), x)
# $`11`
# [1] 123
# 
# $`13`
# [1] 456

# Or, using a slightly more standard R idiom
x[sapply(x, is.null)] <- NULL
x
# $`11`
# [1] 123
# 
# $`13`
# [1] 456

R相关问答推荐

使用R中的gt对R中的html rmarkdown文件进行条件格式设置表的单元格

带有gplot 2的十字舱口

单击 map 后,将坐标复制到剪贴板

使用R中的Shapetime裁剪格栅文件

将复杂的组合列表转换为数据框架

R s iml包如何处理语法上无效的因子级别?'

在ggplot中为不同几何体使用不同的 colored颜色 比例

R中1到n_1,2到n_2,…,n到n_n的所有组合都是列表中的向量?

Ggplot2中geom_tile的动态zoom

将箭头绘制在图形外部,而不是图形内部

从多层嵌套列表构建Tibble?

如何从向量构造一系列双边公式

警告消息";没有非缺失的参数到min;,正在返回数据中的inf";.表分组集

构建一个6/49彩票模拟系统

整理ggmosaic图的标签

将美学添加到ggploy中的文本标签

如何捕获这个shiny 的、可扩展的react 性用户输入矩阵作为另一个react 性对象,以便进一步操作?

如何准确地指出Read_delim所面临的问题?

R中刻面网格中的排序条形图

用从先前非NA值开始的递增序列替换NA值