如果值不存在,R中的table()需要返回零

时间:2014-12-06 00:44:45

标签: r frequency

我对R比较新,我正在做一些dna序列分析。我想知道如果序列中没有N,如何让表函数返回零。而不是返回零,它返回超出边界的下标。我可以做一个if语句,但我认为可能有一个非常简单的方法来解决这个问题?谢谢你的帮助!

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 个答案:

答案 0 :(得分:3)

如果您的数据是具有适当级别的因素,那么您将没有问题:

> 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

即可