R中向量及其负数的所有组合
Posted
技术标签:
【中文标题】R中向量及其负数的所有组合【英文标题】:All combinations of vector and its negatives in R 【发布时间】:2015-03-24 13:20:14 【问题描述】:如何在 R 中找到向量及其负数的所有组合?
I.E.
x <- c(1,2,3,4)
会输出
(1,2,3,4), (-1,2,3,4), (1,-2,3,4), (1,2,-3,4), (1,2,3,-4), ... , (-1,-2,-3,-4)
【问题讨论】:
【参考方案1】:您可以使用do.call
和expand.grid
:
do.call(expand.grid, lapply(x, function(y) c(y, -y)))
# Var1 Var2 Var3 Var4
# 1 1 2 3 4
# 2 -1 2 3 4
# 3 1 -2 3 4
# 4 -1 -2 3 4
# 5 1 2 -3 4
# 6 -1 2 -3 4
# 7 1 -2 -3 4
# 8 -1 -2 -3 4
# 9 1 2 3 -4
# 10 -1 2 3 -4
# 11 1 -2 3 -4
# 12 -1 -2 3 -4
# 13 1 2 -3 -4
# 14 -1 2 -3 -4
# 15 1 -2 -3 -4
# 16 -1 -2 -3 -4
代码lapply(1:4, function(x) c(x, -x))
创建一个包含向量的每个元素及其负数的列表;在您的情况下,这将是list(c(1, -1), c(2, -2), c(3, -3), c(4, -4))
。然后do.call
将每个列表元素作为参数传递给expand.grid
,expand.grid
返回所有可能的组合。
获取参数的一种稍微简单的方法是使用as.data.frame(rbind(x, -x))
而不是lapply(x, function(y) c(y, -y))
。
【讨论】:
【参考方案2】:或者@josilber 的解决方案的变体是
expand.grid(Map(c, x, -x))
【讨论】:
【参考方案3】:使用library(gtools)
gtools::combinations(8,4, c(-4:-1,1:4))
【讨论】:
我认为这不太对。例如,其中一个输出是-4 -1 1 4
,而我认为不应该涉及重复
@Dason 你的观点让我认为最初的问题不清楚。 “向量及其负数的所有组合”对我来说就是我所说的。
我同意。目前尚不完全清楚问题中所需输出的, ...,
部分中的内容
@RichardScriven 不,这并不完全模棱两可,但看起来他们基本上只是想为 (+/- 1, +/- 2, +/- 3, +/- 4) 生成所有可能性
以上是关于R中向量及其负数的所有组合的主要内容,如果未能解决你的问题,请参考以下文章