我有三个人口,我正在使用以下代码计算等位基因频率。我已经制作了一个存储等位基因频率的矩阵
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))
但我收到错误(维度数不正确)
答案 0 :(得分:1)
sum()
函数采用na.rm
参数
见
sum
function (..., na.rm = FALSE) .Primitive("sum")
因此,您需要na.rm = TRUE
功能中的sum(x, na.rm=T)
。