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

前面我們講過

?R批量預(yù)測miRNA和靶基因之間的調(diào)控關(guān)系-ENCORI篇

?R批量預(yù)測miRNA和靶基因之間的調(diào)控關(guān)系-TargetScan篇

?miRNA數(shù)據(jù)庫簡介及miRNA靶基因批量預(yù)測

思路就是將所有miRNA的靶基因做成一個以miRNA名字來命名的列表,批量預(yù)測你自己候選miRNA的靶基因,就只需要取這個列表的子集就可以了。

可能有些小伙伴用這個方法去預(yù)測的時候,會遇到一個warning,原因就是你的候選miRNA不在我們的列表里面。你去取子集的時候,得到的結(jié)果列表里面會有空元素。對于包含空元素的列表去做stack(?R中的stack和unstack函數(shù))的時候,就會出現(xiàn)下面這個warning。這個警告并不會影響我們最后的結(jié)果,但是有些小伙伴可能有強迫癥,不想看到任何警告

那么今天我們就來給大家介紹兩種去除列表里面空元素的方法

我們先來生成一個列表,這個列表有三個元素,名字分別為a,b和d。

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

接下來我們來模擬取子集的過程,假設(shè)我們要取的子集的名字為"a","b","e",很顯然,這里的e不在我們的列表里面。所以返回的結(jié)果里面會有一個空元素。如果你拿這個包含空元素的列表去stack就會出現(xiàn)上面的error

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

雖然有一個warning,但你你會發(fā)現(xiàn)結(jié)果是沒有問題的。

接下來我們來看看,如何消除這個warning

方法一、判斷列表的name是否為NA

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

再去stack就沒有任何問題了

方法二、判斷列表元素的內(nèi)容是否為NULL

data=list(a=1:5,b=letters[1:6],d=2:4)
id=c("a","b","e")
result=data[id]
#先把id賦給list的name,再通過判斷內(nèi)容是否為null來過濾
names(result)=id
result=result[!sapply(result,is.null)]
result

跟上一種方法得到的結(jié)果是一樣的,再去stack也沒有任何警告了。

參考資料:

1.R批量預(yù)測miRNA和靶基因之間的調(diào)控關(guān)系-ENCORI篇

2.R批量預(yù)測miRNA和靶基因之間的調(diào)控關(guān)系-TargetScan篇

3.miRNA數(shù)據(jù)庫簡介及miRNA靶基因批量預(yù)測

4.R中的stack和unstack函數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容