R 用来自另一个向量的不同样本替换向量中的特定值

R 用来自另一个向量的不同样本替换向量中的特定值,r,vector,R,Vector,我有一个带有整数值的向量“a”,由于代码的其他部分正在运行,其中一些可能已变为0。我想用另一个向量“b”中的随机样本替换该向量中出现的0。但是,如果“a”中有多个0值,我希望它们与“b”中的所有不同样本一致。例如: a <- c(1, 2, 3, 0, 0, 0) b <- 1:100 有更好的方法吗?看起来这个双while循环可能需要很长时间才能运行。您可以执行以下操作 indx <- which(!a) # identify the zeroes locations #

我有一个带有整数值的向量“a”,由于代码的其他部分正在运行,其中一些可能已变为0。我想用另一个向量“b”中的随机样本替换该向量中出现的0。但是,如果“a”中有多个0值,我希望它们与“b”中的所有不同样本一致。例如:

a <- c(1, 2, 3, 0, 0, 0)
b <- 1:100

有更好的方法吗?看起来这个双while循环可能需要很长时间才能运行。

您可以执行以下操作

indx <- which(!a) # identify the zeroes locations
# Or less golfed `indx <- which(a == 0)`
a[indx] <- sample(setdiff(b, a), length(indx)) # replace by a sample from `setdiff(b, a)`

indx谢谢!那太干净了!
indx <- which(!a) # identify the zeroes locations
# Or less golfed `indx <- which(a == 0)`
a[indx] <- sample(setdiff(b, a), length(indx)) # replace by a sample from `setdiff(b, a)`