У меня есть список prob
с 50 элементами. Каждый элемент представляет собой матрицу вероятностей 601x3, каждая строка которой представляет полное пространство выборки (т. е. каждая строка каждой матрицы в сумме равна 1). Например, вот первые пять строк первого элемента prob
:
> prob[[1]][1:5,]
[,1] [,2] [,3]
[1,] 0.6027004 0.3655563 0.03174335
[2,] 0.6013667 0.3665756 0.03205767
[3,] 0.6000306 0.3675946 0.03237481
[4,] 0.5986921 0.3686131 0.03269480
[5,] 0.5973513 0.3696311 0.03301765
Теперь я хочу создать следующую матрицу для каждой строки каждой матрицы/элемента в списке prob
. Взяв первую строку, пусть a = 0,603, b = 0,366 и c = 0,032 (округление до трех знаков после запятой). Затем,
> w
[,1] [,2] [,3]
[1,] a*(1-a) -a*b -a*c
[2,] -b*a b*(1-b) -b*c
[3,] -c*a -c*b c*(1-c)
Такой, что:
> w
[,1] [,2] [,3]
[1,] 0.239391 -0.220698 -0.019296
[2,] -0.220698 0.232044 -0.011712
[3,] -0.019296 -0.011712 0.030976
Я хочу получить аналогичную матрицу 3x3 еще 600 раз (для остальных строк этой матрицы), а затем повторить весь этот процесс еще 49 раз для остальных элементов prob
. Единственное, что я могу придумать, это вызвать apply
внутри lapply
, чтобы я получал доступ к каждой строке каждой матрицы по очереди. Я уверен, что это не элегантный способ сделать это (не говоря уже о том, что я не могу заставить его работать), но я не могу думать ни о чем другом. Может ли кто-нибудь помочь мне с этим? Я также хотел бы услышать предложения по использованию другой структуры (например, плохо ли использовать матрицы в списках?).