Tamsayı değerlerini içeren bir "a" vektörüne sahibim, bu kodun bir kısmı çalıştırılan kodun diğer bölümleri nedeniyle 0 olabilir. Bu vektördeki 0 oluşumunu, sahip olduğum başka bir "b" vektöründen rastgele bir örnekle değiştirmek istiyorum. Ancak, "a" da birden fazla 0 değeri varsa, bunları "b" den farklı örneklere göndermeyi isterim. Yani örneğin:Vektördeki belirli değerleri başka bir vektördeki farklı örneklerle değiştirme
a <- c(1, 2, 3, 0, 0, 0)
b <- 1:100
Ben son üç 0 değerlerini istiyoruz olanlar vardır "a", "b" içinde rasgele değerlerle değiştirilmesi, ama ben, 1 2 kullanmaktan kaçınmak istiyoruz, ya da 3. zaten var.
Şu anda, bu yüzden bir süre döngü kullanıyorum:
while(0 %in% a) {
s = sample(1, b)
while(s %in% a) {
s = sample(1, b)
}
a[a==0][1] = s
}
Bunu yapmak için daha iyi bir yolu var mı? Bu çifte benziyor, ilmek uzun sürebilir.
Teşekkür ederiz! Bu çok daha temiz! – user5811685