根据名称匹配大小不同的两个列表的元素

问题描述

我有两个不同大小的清单。一个列表(名为* tree *)由系统发育树(phylo类)组成,第二个列表(名为* data_values *)由数值组成。 列表* tree *的每个系统发育树的提示名称与值列表内每个元素的名称匹配。但是列表 data_values 由比每棵树的顶端更多的元素组成。

library(phytools)
library(ape)
#original tree:
tree_original = rtree(12,tip.label = paste0("species",LETTERS[1:12]))
##list of trees:
nodes = 14:23
trees = lapply(nodes,extract.clade,phy=tree_orignal)
names(trees) <-  paste0("",14:23)
data_values <- list() 
for (i in 1:17) { data_values[[paste0('species',LETTERS[i])]] <- round(rnorm(10,5,4),1) }

我想使用种类作为索引来匹配两个列表(树和data_values),以为每棵树都有一个数据框(请参见下面的示例)。我可以分别对列表树中的每棵树执行此操作,但是由于我的树种列表比此示例大得多,我想知道是否可以对所有树列表执行此操作(如下)并且不运行一棵树,像这样:

tree14 = data_values[match(trees$`14`$tip.label,names(data_values))]
tree14 = llply(tree14,function(x) sapply(x,as.numeric)) 
tree14_df = ldply(tree14,.fun=identity)  **I will need each result as a data.frame**
        .id  1    2   3     4    5    6    7    8    9   10
1  speciesE -0.5 3.4  2.0  5.3  3.7  8.2  3.5 -2.0  3.1 10.2
2  speciesL  6.8 4.3  7.1  5.5  4.9  2.5  0.3 -3.8  4.1  6.4
3  speciesA  2.5 2.5  9.6 10.6  2.2  7.1  4.1  4.4  6.0  6.7
4  speciesI -3.5 7.2  6.8  2.8  7.5  8.9 13.4 13.1  1.8  5.5
5  speciesC  4.3 2.2 10.0  7.4  4.4  8.3 -0.7  3.6  9.2  6.3
6  speciesH  6.3 6.1  2.2  4.6  7.4  7.3  2.9  0.6  3.0  5.2
7  speciesB  8.3 1.7 -0.1  4.5  9.4 -0.2  7.5  1.4 -0.3  4.6
8  speciesD  6.2 5.8  6.6  1.1  5.4 11.1 -1.1  0.0  7.9  0.4
9  speciesG  3.5 2.8  1.4 11.6 -2.8 11.0  3.5  2.8  3.1  4.8
10 speciesK  0.9 4.9  5.4  2.7 -0.7  5.1 18.3  4.9  2.5 -0.7

tree15 = data_values[match(trees$`15`$tip.label,names(data_values))]
tree15 = llply(tree15,as.numeric)) 
tree15_df = ldply(tree15,.fun=identity) 
        .id 1    2    3    4   5    6    7   8    9   10
1 speciesE -0.5 3.4  2.0  5.3 3.7  8.2  3.5 -2.0  3.1 10.2
2 speciesL  6.8 4.3  7.1  5.5 4.9  2.5  0.3 -3.8  4.1  6.4
3 speciesA  2.5 2.5  9.6 10.6 2.2  7.1  4.1  4.4  6.0  6.7
4 speciesI -3.5 7.2  6.8  2.8 7.5  8.9 13.4 13.1  1.8  5.5
5 speciesC  4.3 2.2 10.0  7.4 4.4  8.3 -0.7  3.6  9.2  6.3
6 speciesH  6.3 6.1  2.2  4.6 7.4  7.3  2.9  0.6  3.0  5.2
7 speciesB  8.3 1.7 -0.1  4.5 9.4 -0.2  7.5  1.4 -0.3  4.6

... this operation goes until tree23

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...