Возможно, вот что задает вопрос:
Код исходного ответа был полностью изменен после этого комментария пользователем Roland .
calc_props <- function(x, p.vals, betas){
s <- colSums(p.vals < 5e-8, na.rm = TRUE)
t <- colSums(!is.na(p.vals))
b <- colSums(!is.na(betas))
alt_props <- s/t
alt_props[alt_props/b < 30] <- 30
alt_props
}
В тесте используется матрица pvals
дважды, вторая из них вместо betas
, отсутствующих в вопросе.
calc_props(1:7, pvals, pvals)
# pval_g pval_p pval_p.x pval_p.y pval_m pval_m.x pval_m.y
# 30 30 30 30 30 30 30
Данные в формате dput
pvals <-
structure(c(0.06, 0.95, 0.12, 4.5e-12, 0.39, 0.28, 0.0051, 0.046,
0.48, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.01811,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.2319, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 0.3568, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 0.701233, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.082081,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.13799, NA), .Dim = c(11L,
7L), .Dimnames = list(NULL, c("pval_g", "pval_p", "pval_p.x",
"pval_p.y", "pval_m", "pval_m.x", "pval_m.y")))