Построить все деревья в мультифило объекте в R

Я новичок в R. Есть несколько деревьев в формате Nexus в trees_file:

library(ape)
trees <- read.nexus(“trees_file”)
#plot all trees in trees?

Я старался plot(trees[1][[1]]), а также lapply(trees, plot),

Обновить:

> str(trees)
Class "multiPhylo"
List of 5
 $ model_tree              :List of 4
  ..$ edge       : int [1:94, 1:2] 49 50 51 52 52 53 53 51 54 55 ...
  ..$ Nnode      : int 47
  ..$ tip.label  : chr [1:48] "t18" "t42" "t2" "t15" ...
  ..$ edge.length: num [1:94] 1e+35 1e+35 1e+35 1e+35 1e+35 ...
  ..- attr(*, "class")= chr "phylo"
  ..- attr(*, "order")= chr "cladewise"
 $ RF_supertree            :List of 3
  ..$ edge     : int [1:94, 1:2] 49 50 50 51 52 53 54 55 55 54 ...
  ..$ tip.label: chr [1:48] "t2" "t14" "t26" "t30" ...
  ..$ Nnode    : int 47
  ..- attr(*, "class")= chr "phylo"
  ..- attr(*, "order")= chr "cladewise"
 $ maximum_parsimony       :List of 3
  ..$ edge     : int [1:93, 1:2] 49 49 50 51 52 53 53 54 54 52 ...
  ..$ tip.label: chr [1:48] "t10" "t19" "t31" "t8" ...
  ..$ Nnode    : int 46
  ..- attr(*, "class")= chr "phylo"
  ..- attr(*, "order")= chr "cladewise"
 $ quart_supertree         :List of 3
  ..$ edge     : int [1:93, 1:2] 49 50 50 51 52 53 54 54 53 55 ...
  ..$ tip.label: chr [1:48] "t35" "t19" "t31" "t17" ...
  ..$ Nnode    : int 46
  ..- attr(*, "class")= chr "phylo"
  ..- attr(*, "order")= chr "cladewise"
 $ quartet_super_duper_tree:List of 3
  ..$ edge     : int [1:94, 1:2] 49 50 50 51 52 53 54 55 56 57 ...
  ..$ tip.label: chr [1:48] "t10" "t27" "t40" "t43" ...
  ..$ Nnode    : int 47
  ..- attr(*, "class")= chr "phylo"
  ..- attr(*, "order")= chr "cladewise"

> plot(trees[1][[1]])
Error in plot.window(...) : need finite 'xlim' values
> lapply(trees, plot)
Error in plot.window(...) : need finite 'xlim' values

А вот и trees_file:

#nexus

Begin trees;

tree model_tree = ((((t18:99999999999999996863366107917975552.000000,(t42:99999999999999996863366107917975552.000000,t2:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,(((t15:99999999999999996863366107917975552.000000,(t37:99999999999999996863366107917975552.000000,t21:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,(((t5:99999999999999996863366107917975552.000000,t48:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,(t40:99999999999999996863366107917975552.000000,t33:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,(t1:99999999999999996863366107917975552.000000,t35:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,((t38:99999999999999996863366107917975552.000000,(t17:99999999999999996863366107917975552.000000,(t44:99999999999999996863366107917975552.000000,t6:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,t3:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,(((t20:99999999999999996863366107917975552.000000,t16:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,(t12:99999999999999996863366107917975552.000000,(((t13:99999999999999996863366107917975552.000000,t28:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,((t31:99999999999999996863366107917975552.000000,t7:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,((t32:99999999999999996863366107917975552.000000,t43:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,t19:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,t23:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,((((t10:99999999999999996863366107917975552.000000,t46:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,t47:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,(t4:99999999999999996863366107917975552.000000,t25:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,((t30:99999999999999996863366107917975552.000000,t8:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,t14:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,((((t36:99999999999999996863366107917975552.000000,t34:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,(((t45:99999999999999996863366107917975552.000000,t27:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,t29:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,(t22:99999999999999996863366107917975552.000000,t24:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,((t26:99999999999999996863366107917975552.000000,(t9:99999999999999996863366107917975552.000000,t11:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,t39:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000,t41:99999999999999996863366107917975552.000000):99999999999999996863366107917975552.000000);

tree RF_supertree = ((t2,(((((t14,t26),(t30,t33)),(t8,(((t11,t21),(((t24,(t25,(((t42,t45),(t48,t38)),t20))),(t44,t39)),((t17,(t19,t40)),t10))),(((((t46,(t1,t43)),t29),t27),(t37,(((t35,t3),t9),(t15,t22)))),(((t4,t31),t6),t13))))),t28),((((t16,t23),t36),((t12,((t34,t41),t32)),t47)),(t7,t5)))),t18);

tree maximum_parsimony = (t10,((((t19,(t31,t8)),(t17,(t18,t21))),((((t48,t38),t42),t3),(t20,t44))),(((((t23,t16),t36),((t11,t2),(t34,t39))),(t26,t33)),((((((((t28,t6),(((t41,((t46,t32),t47)),t4),t30)),t5),t43),(t7,((((t15,t22),t12),t9),t25))),t14),t40),(t27,((t13,t1),t35))))),((t37,t29),(t24,t45)));

tree quart_supertree = ((t35,((((t19,t31),(((t17,(t18,(t43,((t3,t15),t22)))),t28),(t24,(((((((t11,(t1,t13)),t16),t21),t12),t20),t25),(t14,t26))))),t2),((((((((((((((t5,t8),(t34,(t6,(t9,t45)))),t47),t42),t41),t4),(((t40,(t46,t7)),t32),t27)),t44),t30),t23),t37),t36),t33),t29))),t39,((t38,t48),t10));

tree quartet_super_duper_tree = ((t10,((((((((((t27,t40),((((((((t43,t14),((t28,t4),t5)),(t15,t3)),t36),t31),(((((t41,((t32,(t47,t46)),t30)),t34),t2),t6),t7)),(((t16,t8),t33),t12)),(((t17,t18),t22),t26))),t23),(t35,t9)),t21),t25),t20),(t11,((t48,(t38,t1)),(t29,t37)))),t19),((((t39,t44),t13),t24),t45))),t42);

end;

1 ответ

Решение

В прошлом я делал это, печатая деревья на отдельных страницах PDF, используя цикл for.

Например:

pdf("my_trees.pdf")
for(i in 1:length(trees)){
    plot(trees[[i]])
}
dev.off()

Деревья хранятся в виде списка, и вам нужно получить доступ ко всему объекту дерева для построения графика, поэтому вам нужно использовать квадратные скобки в цикле for, а не [1][1] согласно вашей предыдущей попытке.

По сути, это то, что делает lapply, но, сохранив его на страницах в формате PDF, вы сможете увидеть каждое дерево. Если вы не сохраняете в PDF (или другой формат), R будет просто перезаписывать предыдущий график каждый раз, и это может быть причиной того, что у вас останется один график.

Другие вопросы по тегам