2014-12-06 50 views
0

我對R相對較新,我正在做一些dna序列分析。如果序列中沒有N,我想知道如何讓表函數返回零。而不是返回零它返回下標越界。我可以做一個if語句,但我認爲可能有一個非常簡單的方法來解決這個問題?謝謝您的幫助!如果值不存在,則R中的表()需要返回零

library(seqinr) 
firstSet<-read.fasta("NC_000912.fna") 
seqFirstSet<-firstSet[[1]] 
length(seqFirstSet) 
count(seqFirstSet,1) 
count(seqFirstSet,2) 
seqTable<-table(seqFirstSet) 
seqTable[["g"]] 
seqTable[["n"]] 
+1

什麼是class(s​​eqFirstSet)?請包括足夠的示例數據,使您的問題[reproducible](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – MrFlick 2014-12-06 01:15:54

+0

也許如果你從'dput(head(seqTable))發佈輸出',事情就會被澄清。 – 2014-12-06 01:52:39

回答

2

如果你的數據是適當水平的因素,那麼你不會有任何問題:

> x <- factor(letters[1:3]) 
> y <- factor(letters[1:3], levels = letters) 

> table(x) 
x 
a b c 
1 1 1 

> table(y) 
y 
a b c d e f g h i j k l m n o p q r s t u v w x y z 
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

> table(x)[["g"]] 
Error in table(x)[["g"]] : subscript out of bounds 

> table(y)[["g"]] 
[1] 0 

只需設置levels

相關問題