我的目标是创建一个向量,使用和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)
}
答案 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
编辑:现在该功能甚至允许奇数。