Это не работает, потому что ваши данные организованы не так. Каждая строка ваших данных представляет собой полную таблицу 2х2. Используйте dput
, чтобы разместить ваши данные в формате, который мы можем легко прочитать. Затем мы можем вырезать / вставить его:
dta <- structure(list(AB = c(440L, 3L, 23L, 4L), A = c(54L, 6L, 25L,
5L), B = c(67L, 56L, 3L, 67L), Neg = c(345L, 543L, 765L, 243L
)), class = "data.frame", row.names = c("N", "O", "P", "R"))
dfa
# AB A B Neg
# N 440 54 67 345
# O 3 6 56 543
# P 23 25 3 765
# R 4 5 67 243
Первый ряд dfa - это таблица, поэтому для N:
N <- matrix(unlist(dfa[1, ]), 2, 2, byrow=TRUE, dimnames=list(A=c("Pos", "Neg"), B=c("Pos", "Neg")))
N
# B
# A Pos Neg
# Pos 440 54
# Neg 67 345
Мы можем использовать apply
, чтобы получить все Phi коэффициенты:
apply(dfa, 1, function(x) Phi(matrix(x, 2)))
# N O P R
# 0.73028594 0.09784794 0.63669678 0.09088293