Я пытаюсь объединить вывод BEAST с метаданными, используя R. До сих пор я следовал этому примеру:
https://yulab-smu.github.io/treedata-book/chapter3.html#combining -дерево с внешними данными
Моя проблема возникает из-за необходимости объединить вывод BEAST с метаданными по значению edge (не label, node, et c.), Поскольку я заинтересован в отображении метаданных ветви в моей филогенетике c tree.
Мне нужно сопоставить данные из моего newick ("x" ниже) с моими внешними данными ("d" ниже) на основе матрицы целых чисел - переменная "edge".
Вот краткое изложение того, что я пробовал:
#format external data for join:
d <- tibble(edge = d$edge,
trait = d$Line_Bearing)
>d
# A tibble: 95 x 2
edge[,1] [,2] trait
<int> <int> <int>
1 49 50 284
2 49 62 104
3 50 51 285
4 50 59 257
5 51 52 344
6 51 9 169
7 52 53 304
8 52 8 95
9 53 54 239
10 53 7 4
# … with 85 more rows
#format tree for join:
mcc_tree_newick = read.newick("beast_010820_cauchyRRW_JC_strictclock_constantsize.newick")
x <- as_tibble(mcc_tree_newick)
x #add edges to x
#need to add a row for root to achieve matching column lengths:
root<-NULL
root1<-matrix(0,1)
root2<-matrix(49,1)
root<-cbind(root1,root2)
tree_edges_root<-NULL
tree_edges_root$edge<-rbind(mcc_tree_newick$edge,root)
x <- x %>% add_column(x, tree_edges_root$edge)
names(x)[6]<-"edge"
> x
# A tibble: 95 x 6
parent node branch.length label x$parent $node $branch.length $label edge[,1] [,2]
<int> <int> <dbl> <chr> <int> <int> <dbl> <chr> <dbl> <dbl>
1 57 1 0.0525 MH367377_MOY20… 57 1 0.0525 MH367377_MOY20… 49 50
2 57 2 0.0525 MH367368_MOY20… 57 2 0.0525 MH367368_MOY20… 50 51
3 56 3 0.156 MH367375_MOY21… 56 3 0.156 MH367375_MOY21… 51 52
4 55 4 0.0812 MH367346_APA14… 55 4 0.0812 MH367346_APA14… 52 53
5 58 5 0.0223 MH367344_APA06… 58 5 0.0223 MH367344_APA06… 53 54
6 58 6 0.0223 MH367347_APA04… 58 6 0.0223 MH367347_APA04… 54 55
7 53 7 0.319 MH367360_KRD14… 53 7 0.319 MH367360_KRD14… 55 56
8 52 8 0.476 MH367342_APA26… 52 8 0.476 MH367342_APA26… 56 57
9 51 9 1.10 MH367378_LUW03… 51 9 1.10 MH367378_LUW03… 57 1
10 60 10 1.70 KY548474_KAY09… 60 10 1.70 KY548474_KAY09… 57 2
# … with 85 more rows
new_tree <- full_join(x, d, by = "edge")
Моя ошибка: «Ошибка: невозможно объединить по краю» x «ребро» из-за несовместимых типов (матрица / матрица). "
Я понимаю:
(1) full_join ожидает, что правый элемент будет кадром данных. Несмотря на мои попытки обработки данных, я не могу понять, как преобразовать мое «ребро» в объединяемые переменные без потери данных.
(2) Это не воспроизводимый пример - извинения, но я надеясь, что кто-нибудь сможет указать на простое изменение форматирования.
Заранее большое спасибо, A.