在我的apply函数中将na.rm = T放在哪里

时间:2016-05-03 06:57:10

标签: r

我有三个人口,我正在使用以下代码计算等位基因频率。我已经制作了一个存储等位基因频率的矩阵

M=matrix(NA,nrow(mydata),3,) #3 populations
colnames(M)=c("pop1","pop2","pop3")

然后使用

计算每个人口
#population 1
M[,1]=(apply(mydata[,which(colnames(mydata)=="pop1")],
1,function(x) sum(x)/(length(x)*2))

我将na.rm = T放在哪里,以免由于我的数据中的NA而导致错误?我试过了

M[,1]=(apply(mydata,na.rm=T[,which(colnames(mydata)=="pop1")],
1,function(x) sum(x)/(length(x)*2))

但我收到错误(维度数不正确)

1 个答案:

答案 0 :(得分:1)

sum()函数采用na.rm参数

sum
function (..., na.rm = FALSE)  .Primitive("sum")

因此,您需要na.rm = TRUE功能中的sum(x, na.rm=T)