【发布时间】:2016-07-26 21:22:48
【问题描述】:
我有 5 个向量,其中 2 个我认为是“成对的”,这意味着它们具有相同数量的元素,并且每个向量中的相应元素相互匹配(在我的例子中,我为不同的 Beta 指定了 alpha 和 beta分布)。我想制作一个包含三个不成对向量的元素和其他两个向量中的元素对的所有组合的矩阵。我想这样做的方法是将对中的一个向量的元素与其他三个非配对向量进行组合,然后将左侧配对向量的元素与其伙伴匹配。我已经进行了组合,但正在努力完成第二部分 - 在组合完成后将元素配对。这是我第一部分的代码:
l <- list(alpha=c(8.572, 20, 23.333, 45), n=c(10, 20, 40), numc=c(2, 3, 5), numq=c(5, 10, 20))
combo <- expand.grid(l)
beta <- c(20, 20, 10, 5)
“combo”对象的前几行如下所示:
alpha n numc numq
1 8.572 10 2 5
2 20.000 10 2 5
3 23.333 10 2 5
4 45.000 10 2 5
5 8.572 20 2 5
6 20.000 20 2 5
现在我想在这个数据框中插入一个名为“beta”的向量,它将每个 alpha 值(索引 1 到 4)与我指定的 beta 向量中的相应 beta 值配对。例如,每当 alpha 为 8.572,beta 为 20。我该怎么做?
【问题讨论】:
-
这不就是
combo$beta <- beta吗?虽然如果数据尚未排序(如您的情况),您也可以执行combo$beta <- beta[match(combo$alpha, l$alpha)]可能 -
哦,是的。谢谢。看起来这只有效,因为 alpha 值一次循环通过一个,但如果我在列表中有第二个或第三个或第四个 alpha 然后通过 expand.grid 运行它,这将不起作用。不过没关系。
-
然后
match将起作用。或factor就像在下面的答案中