我有一个长度为1000的向量X,包含10个随机放置的和990个零。
我有以下功能修改了矢量X.
foo <- function(X){
old <- sample(which(X==1),1)
new <- sample(c(1:1000),1)
X[old] <- 0
X[new] <- 1
return(X)
}
以上功能确实如下:
使用上面的代码,可以将1添加到已经拥有1的位置。这我不想成为可能。换句话说,我总是希望在我的向量中有10个。
解决方案必须没有循环,因为我调用了这个函数数千次,速度至关重要。
答案 0 :(得分:0)
new 索引必须限制为值,其中X不是1:
foo <- function(X){
old <- sample(which(X==1),1)
new <- sample(c(1:1000)[X!=1],1)
X[old] <- 0
X[new] <- 1
return(X)
}