前面我們講過
?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篇