L oop через указанную c комбинацию имен во вложенном цикле for - PullRequest
1 голос
/ 16 марта 2020

Я работаю с матрицей взаимодействия (mat_SES) в R, где строки - виды млекопитающих, а столбцы - виды растений. Каждый элемент представляет собой стандартизированный размер эффекта (SES), показывающий отклонение от случайной ассоциации между млекопитающим и видом растения. Я хочу сделать объект со значениями SES для определенных c комбинаций видов, которые есть у меня в другом объекте (Mammal_plant_list). Я пытаюсь сделать это с вложенным для l oop. Например:

ses <- data.frame()
for (i in Mammal_plant_list$MAMMAL){
      for (j in Mammal_plant_list$PLANT){
 mat_SES[i,j] -> ses[i,j]
    }}

Mat_SES выглядит следующим образом, где строки - виды млекопитающих, а столбцы - виды растений:

+-------------------+--------------------+--------------------+---------------------+
|                   | Abarema_adenophora | Abarema_auriculate | Abarema_barbouriana |
+-------------------+--------------------+--------------------+---------------------+
| Abrothrix_andinus |       -1.760111139 |        -1.13808418 |         -1.41032139 |
| Abrothrix_jelskii |        -2.01015237 |        -1.33864697 |         -1.65545444 |
| Akodon_aerosus    |         0.85578570 |         1.46373125 |          1.12302317 |
+-------------------+--------------------+--------------------+---------------------+

Mammal_plant_list выглядит так, где каждая строка является i млекопитающих и j видов растений, для которых я хочу найти значение SES в df_SES:

+---------------------+--------------------------+
|       MAMMAL        |          PLANT           |
+---------------------+--------------------------+
| Sciurus_granatensis | Astrocaryum_standleyanum |
| Sciurus_granatensis | Dipteryx_panamensis      |
| Sciurus_granatensis | Gnetum_leyboldii         |
| Sciurus_granatensis | Scheelea_zonensis        |
| Sciurus_granatensis | Gustavia_superba         |
+---------------------+--------------------------+

Я также хотел бы включить в код, что он только должен найти значения SES, которые больше чем 2

l oop, который я пытаюсь сделать, не работает. Он находит правильное значение SES для первой комбинации видов, но затем останавливается. Я получаю сообщение об ошибке:

Абонементы без границ

Надеюсь, что кто-нибудь может помочь!

...