Трофическая позиция / высота в пищевых сетях (следование путям в сетях)

В рамках разработки демонстрации пакета, над которым я работаю, мне нужно количественно оценить классическую экологическую пищевую сеть, как описано ниже. Я проверил веганский, двусторонний и sna, но не вижу ничего, что делает то, что мне нужно, хотя я могу ошибаться - это большие пакеты. Поэтому мне интересно, есть ли эта идея уже в пакете или у кого-то есть умный способ вычислить результаты. Похоже, это должен быть пакет.

Пищевая сеть может быть описана матрицей взаимодействий между видами A: F, как показано в коде и на диаграмме. На словах можно было бы сказать, что «A ест B, который ест E» и т. Д. (Очень трудно увидеть в матрице, тривиально на диаграмме).

species <- LETTERS[1:6]

links <- c(0, 1, 0, 0, 0, 0,
    1, 0, 1, 1, 1, 0,
    0, 1, 0, 0, 1, 0,
    0, 1, 0, 0, 1, 1,
    0, 1, 1, 1, 0, 0,
    0, 0, 0, 1, 0, 0)

L <- matrix(links, nrow = 6, byrow = TRUE,
    dimnames = list(species, species))

Я хочу вычислить трофическое положение и трофическую высоту каждого вида. Трофическая позиция определяется как общее количество видов в пищевой цепи ниже определенного вида +1. На диаграмме трофическая позиция A равна 6, а для D - 3. С другой стороны, трофическая высота является средней. положения вида в каждой отдельной цепочке, в которой он участвует. Вид B связан с 4 разными цепями (путями); его высота - это среднее значение позиций, рассматриваемых по очереди: (3 + 3 + 3 + 2) / 4 = 2,75.

С точки зрения вычислений, необходимо прочитать матрицу L, а затем проработать различные пути, подразумеваемые матрицей, для вычисления необходимых значений.

Если это не слишком глупо, знает ли кто-нибудь пакет, который будет это делать, или видит способ проследить пути и вычислить различные длины / параметры? Мне кажется, что должен быть какой-то рекурсивный / применимый подход, который должен работать, но я не хочу изобретать что-то заново.

Заранее спасибо

a simple food web

6
задан Bryan Hanson 6 October 2011 в 18:50
поделиться