Я хотел бы использовать этот метап из пакета для вычисления нескольких значений o
У меня есть мой фрейм данных со значениями 3 p
> dput(head(tt))
structure(list(RS = c("rs2089177", "rs4360974", "rs6502526",
"rs8069906", "rs9905280", "rs4313843"), G = c(0.9986, 0.9738,
0.9744, 0.7184, 0.7205, 0.9804), E = c(0.7153, 0.7838, 0.7839,
0.4918, 0.4861, 0.8522), B = c(0.604716, 0.430228, 0.42916, 0.521452,
0.465758, 0.474313)), class = c("data.table", "data.frame"), row.names = c(NA,
-6L), .internal.selfref = <pointer: 0x10200eee0>)
и фрейм данных с соответствующими весами для каждого изЗначения p из фрейма данных tt
> dput(head(df))
structure(list(wg = c(40.6324993078201, 40.6324993078201, 40.6324993078201,
40.6324993078201, 40.6324993078201, 40.6324993078201), we = c(35.3977400408557,
35.3977400408557, 35.3977400408557, 35.3977400408557, 35.3977400408557,
35.3977400408557), wb = c(580.643608420863, 580.643608420863,
580.643608420863, 580.643608420863, 580.643608420863, 580.643608420863
), RS = c("rs2089177", "rs4360974", "rs6502526", "rs8069906",
"rs9905280", "rs4313843")), row.names = c(NA, 6L), class = "data.frame")
Столбец RS одинаков в df и tt
Как использовать эту функцию sunz () для создания нового фрейма данных, который будет выглядеть одинаковокак только у tt будет дополнительный столбец, скажем, с именем «META», который рассчитал значения meta p для каждой строки
Это пример того, сколько будет p-значение в первой строке:
> sumz(c(0.9986,0.7153,0.604716), weights = c(40.6325,35.39774,580.6436), na.action = na.fail)
p = 0.6940048
это функция, о которой я говорил: https://www.rdocumentation.org/packages/metap/versions/1.1/topics/sumz
Я попытался объединить эти два фрейма данных и применить функцию к каждой строке:
> head(q)
ID P G E wb wg we
1: rs1029830 0.0979931 0.0054060 0.39160 580.6436 40.6325 35.39774
2: rs1029832 0.1501820 0.0028140 0.39320 580.6436 40.6325 35.39774
3: rs11078374 0.1701250 0.0009805 0.49730 580.6436 40.6325 35.39774
4: rs1124961 0.1710150 0.7252000 0.05737 580.6436 40.6325 35.39774
5: rs1135237 0.1493650 0.6851000 0.06354 580.6436 40.6325 35.39774
6: rs11867934 0.0757972 0.0006140 0.00327 580.6436 40.6325 35.39774
helper <- function(x) {
p <- sumz(x[2:4], weights = x[5:7])$p
p
}
q$META <- apply(q, MARGIN = 1, helper)
, но я получаю этоошибка:
Error in sumz(x[2:4], weights = x[5:7]) :
Must have at least two valid p values