在r中生成具有特定和的随机向量

时间:2018-04-11 14:13:02

标签: r sample

我的目标是创建一个向量,使用和0,其中有相同数量的条目-x和相同数量的条目等于x,向量的长度是偶数,因此它总和为0。 我创建了一个函数,它有x作为输入。 在那里我插入了一个矢量长度的样本,但最后它没有用完。

vector<-function(x){ 
    for(i in length(sample)){
      if(i %% 2!=0){
     output[sample[i]]<-(-x)
   }
    if(i %% 2 ==0){
      output[sample[i]]<-x
    }
  }
return(output)
  }

3 个答案:

答案 0 :(得分:0)

试试这个:

vector <- function(x, sample){
  c(rep(x, sample/2), rep(-x, sample/2))
}
print(vector(x = 1, sample = 4))
# [1]  1  1 -1 -1

修改

如果需要替换:

vector <- function(x, sample){
    c(rbind(rep(-x, sample/2), rep(x, sample/2)))
}
print(vector(x = 1, sample = 4))
# [1] -1  1 -1  1

答案 1 :(得分:0)

你可以尝试

foo <- function(x, sample){
  a <- sample(sample, x/2, replace = T)
  c(a,-a)
  # or alternating
  # c(rbind(a,-a))
}
set.seed(123)
foo(4, 1:10)
[1]  3  8 -3 -8

答案 2 :(得分:0)

根据标题,您正在寻找随机向量。在这种情况下,您可以先生成一个具有所需属性的有序向量,然后使用sample对其进行随机化:

f <- function(x, size){
  sample(c(rep(x, size/2), rep(-x, size/2), if(size %% 2 != 0) 0))
}
f(x = 1, size = 6)
#> [1]  1 -1 -1  1 -1  1
f(x = 1, size = 7)
#> [1]  0 -1 -1  1 -1  1  1

编辑:现在该功能甚至允许奇数。