如何删掉R列表里面的空元素

前面我们讲过

☞R批量预测miRNA和靶基因之间的调控关系-ENCORI篇

☞R批量预测miRNA和靶基因之间的调控关系-TargetScan篇

☞miRNA数据库简介及miRNA靶基因批量预测

思路就是将所有miRNA的靶基因做成一个以miRNA名字来命名的列表,批量预测你自己候选miRNA的靶基因,就只需要取这个列表的子集就可以了。

可能有些小伙伴用这个方法去预测的时候,会遇到一个warning,原因就是你的候选miRNA不在我们的列表里面。你去取子集的时候,得到的结果列表里面会有空元素。对于包含空元素的列表去做stack(☞R中的stack和unstack函数)的时候,就会出现下面这个warning。这个警告并不会影响我们最后的结果,但是有些小伙伴可能有强迫症,不想看到任何警告

那么今天我们就来给大家介绍两种去除列表里面空元素的方法

我们先来生成一个列表,这个列表有三个元素,名字分别为a,b和d。

data=list(a=1:5,b=letters[1:6],d=2:4)

接下来我们来模拟取子集的过程,假设我们要取的子集的名字为"a","b","e",很显然,这里的e不在我们的列表里面。所以返回的结果里面会有一个空元素。如果你拿这个包含空元素的列表去stack就会出现上面的error

id=c("a","b","e")
result=data[id]
stack(result)

虽然有一个warning,但你你会发现结果是没有问题的。

接下来我们来看看,如何消除这个warning

方法一、判断列表的name是否为NA

#此时不存在的id,name为NA,取name不是NA的元素
result=result[!is.na(names(result))]
result

再去stack就没有任何问题了

方法二、判断列表元素的内容是否为NULL

data=list(a=1:5,b=letters[1:6],d=2:4)
id=c("a","b","e")
result=data[id]
#先把id赋给list的name,再通过判断内容是否为null来过滤
names(result)=id
result=result[!sapply(result,is.null)]
result

跟上一种方法得到的结果是一样的,再去stack也没有任何警告了。

参考资料:

1.R批量预测miRNA和靶基因之间的调控关系-ENCORI篇

2.R批量预测miRNA和靶基因之间的调控关系-TargetScan篇

3.miRNA数据库简介及miRNA靶基因批量预测

4.R中的stack和unstack函数

你可能感兴趣的:(如何删掉R列表里面的空元素)