我有一个带有整数值的向量“a”,由于正在运行的代码的其他部分,其中一些可能已经变为0 . 我想用来自另一个矢量“b”的随机样本替换此向量中出现的0 . 但是,如果“a”中有多个0值,我希望它们来自“b”的所有不同样本 . 例如:
a <- c(1, 2, 3, 0, 0, 0)
b <- 1:100
我想将“a”的最后三个0值替换为“b”中的随机值,但我想避免使用1,2或3.这些已经在a中 .
目前,我正在使用while循环,所以:
while(0 %in% a) {
s = sample(1, b)
while(s %in% a) {
s = sample(1, b)
}
a[a==0][1] = s
}
有一个更好的方法吗?看起来像这个双循环可能需要很长时间才能运行 .
1 回答
您可以执行以下操作
我们没有指定
replace = TRUE
所以新值将始终彼此不同 .