创建带有数字的向量;合伙人;在另一个向量中使用其他数字 我有5个向量,其中2个我认为是“配对的”,这意味着它们具有相同数量的元素,并且每个向量中的相应元素彼此相交(在我的例子中,我已经为不同的β分布指定了Alpas和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)
现在我想在这个数据帧中插入一个称为“beta”的向量,它将每个alpha值(索引1到4)与我指定的beta向量中的对应beta值配对。例如,当alpha为8.572时,beta为20。我该怎么做 我想你想要的是创建带有数字的向量;合伙人;在另一个向量中使用其他数字 我有5个向量,其中2个我认为是“配对的”,这意味着它们具有相同数量的元素,并且每个向量中的相应元素彼此相交(在我的例子中,我已经为不同的β分布指定了Alpas和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),r,vector,R,Vector,现在我想在这个数据帧中插入一个称为“beta”的向量,它将每个alpha值(索引1到4)与我指定的beta向量中的对应beta值配对。例如,当alpha为8.572时,beta为20。我该怎么做 我想你想要的是 alpha <- factor(combo$alpha) beta <- factor(beta) combo$beta <- beta[alpha] 你可以考虑如果你想把一个数值向量中的第n个元素映射到某个因子,那么你就把数字向量当作一个有序的因子。这样,您就可以指
alpha <- factor(combo$alpha)
beta <- factor(beta)
combo$beta <- beta[alpha]
你可以考虑如果你想把一个数值向量中的第n个元素映射到某个因子,那么你就把数字向量当作一个有序的因子。这样,您就可以指定顺序,而不取决于您的beta版初始顺序
在这里,我切换了beta的顺序,并提供了有序因子alpha的级别,这是根据您的原始顺序指定的l <- list(alpha=c(23.333, 20, 45, 8.572),
n=c(10, 20, 40), numc=c(2, 3, 5), numq=c(5, 10, 20))
combo <- expand.grid(l)
beta <- factor(c(20, 10, 20, 5))
alpha <- as.ordered(factor(combo$alpha,
levels = c(8.572, 20, 23.333, 45)))
combo$beta <- beta[alpha]
l这不只是combo$beta哦,是的。谢谢这看起来只起作用,因为alpha值一次循环一个,但是如果列表中有alpha秒、第三个或第四个,然后通过expand.grid运行它,这就不起作用了。不过,没关系,那么match
就可以了。或者因子
与下面的答案类似,因为依靠因子
自行设置水平是危险的。如果alpha
不符合加入顺序,则您的解决方案将无法工作。考虑下面的例子<代码> Alpha OH,可能是因为你不把它们都分解了吧?在你的例子中,<代码> Alpha < /代码>从<代码> 23.333代码>代码> <代码> beta >代码> <代码> 20 >代码>,而<代码>头(CONBO)的第一行显示<代码> beta=10</COD> < <代码> Alpha=23.333 所以不,它似乎不能正确工作,但OP希望23.333的alpha值映射到10的beta值?是的,我希望23.333的alpha值映射到10的beta值,因为在我的原始示例中,这些是各自向量的第三个元素。
sa <- sample(alpha)
combo$beta <- beta[sa]
l <- list(alpha=c(23.333, 20, 45, 8.572),
n=c(10, 20, 40), numc=c(2, 3, 5), numq=c(5, 10, 20))
combo <- expand.grid(l)
beta <- factor(c(20, 20, 10, 5))
alpha <- factor(combo$alpha)
combo$beta <- beta[alpha]
head(combo)
alpha n numc numq beta
1 23.333 10 2 5 10
2 20.000 10 2 5 20
3 45.000 10 2 5 5
4 8.572 10 2 5 20
5 23.333 20 2 5 10
6 20.000 20 2 5 20
l <- list(alpha=c(23.333, 20, 45, 8.572),
n=c(10, 20, 40), numc=c(2, 3, 5), numq=c(5, 10, 20))
combo <- expand.grid(l)
beta <- factor(c(20, 10, 20, 5))
alpha <- as.ordered(factor(combo$alpha,
levels = c(8.572, 20, 23.333, 45)))
combo$beta <- beta[alpha]