0
我有以下功能:錯誤的功能,試圖刪除NAS計算值
Fisher.test <- function(p) {
Xsq <- -2*sum(log(p), na.rm=TRUE)
p.val <- 1-pchisq(Xsq, df = 2*length(p))
return(p.val)
}
我猜命令na.rm=TRUE
正在處理我的數據NA
。但是,當我用簡單的值測試函數時,行爲不是預期的。例如:
Fisher.test(c(0.1,0.4,0.1,NA))
[1] 0.199279
Fisher.test(c(0.1,0.4,0.1))
[1] 0.08705891
爲什麼在第一個選項中我沒有得到與第二個選項相同的結果? na.rm=TRUE
應該刪除NA
??
非常感謝
感謝@eddi,如果不存在負值在我的數據,該方法在「速度」方面,你會用? 'sum(!is.na(p))'或'sum(p> = 0,na.rm = T)'? – user2380782
'sum(!is.na(p))'有點快;請查看'microbenchmark'軟件包以輕鬆檢查這些類型的東西 – eddi