【发布时间】:2014-07-18 11:20:51
【问题描述】:
我有一组四个向量,如下所示:
[1] PRI2CO HEISCO PRI2CO DIALGU DIALGU ALSEBL
Levels: ALSEBL DIALGU HEISCO PRI2CO
[1] PRI2CO TET2PA ALSEBL PRI2CO ALSEBL TET2PA
[7] HEISCO TET2PA
Levels: ALSEBL HEISCO PRI2CO TET2PA
我想生成一个向量,其中包含在四个向量的每个可能组合之间匹配的所有值。对于上述两个,它将包含 ALESBL、HEISCO 和 PRI2CO。到目前为止,我一直在手工完成所有组合,但它很乏味,我认为必须有更好的方法。我尝试为它编写一个循环,但我对 R 很陌生,它还没有工作。这是我一直在做的事情:
trees.species.P234<-intersect(intersect(trees.species.P2,trees.species.P3),trees.species.P4)
> trees.species.P234
[1] "PRI2CO " "ALSEBL "
我在想一个涉及阶乘的 for 循环可能会做到这一点,但我无法让它工作。
【问题讨论】:
-
这个:stackoverflow.com/questions/22624284/r-intersecting-strings/… 有帮助吗?这听起来像你想做什么,但我不完全确定。即 -
Reduce(intersect, list(one,two) )适用于您的示例,可扩展到 3+ 个向量。 -
看起来很有希望!我明天试一试,然后回来报告
-
您也可以从
library(MergeGUI)查看intersect2 -
Reduce实际上对于找到向量的相交非常有效——在我只是将相交相互嵌套之前(即intersect(intersect(a,b),c)。我想做的是将该函数应用于所有向量的可能组合(可能像下面的combn?) - 1 和 2、1 2 3 等 - 最终可能会计算出每个唯一 ID 出现的交叉点数?我认为下面的评论是它,但我不够熟练,无法弄清楚这一点
标签: r