Basit bir sorunum var, ancak üstesinden gelmek için mantığı kavrayamadım.NA'lara abonelikli ödevlerde izin verilmez
NA'lı sayısal vektörler var ve bunlara koşullu bir işlem uygulamak istiyorum.
x <- c(1,3,5,7,NA,2,4,6)
x[x>=5] <- c(1:8)[x>=5]
x[x<5] <- (c(1:8)*10)[x<5]
It "UA'lar indisli atamaları izin verilmez" hata verir, bu yüzden bunun için mantıklı bir çözüm ne olacağını bilmek istiyorum,:
sorunuma benzer basit bir örnektir Her bir ilişkilendirmeyi çalıştırmanın beklendiği gibi çalıştığı göz önünde bulundurulduğunda.
ben beklenen sonucunu istiyorum: Tercihen
[1] 10 20 3 4 NA 60 70 8
bu operasyon yaşları alıyor tekrarlamalar dolu boş modelleme için bir fonksiyonu zaten olduğu gibi döngü için yapmak zorunda kalmadan.
Sana atama ve Altsimgeleme intermixing düşünüyorum, önceden Leonardo
Bu çok ilginç. Görünüşe göre, tam sayıyı "NA" ile birleştiremezsiniz, ancak RHS üzerinde birden fazla değeriniz varsa ... 'x [c (NA, 1)] <- 100' ve ' x [NA] <- 100' her ikisi de çalışırken, x [c (NA, 1)] <- 100: 101' veya ' x [NA] <- 100: 101', –
değil. Bu hata mesajına ulaştığı için değerli bir sorudur. Ancak, kodunuzun NA kaynaklı hatalar olmadan çalıştırılsa bile, beklenen sonucu vermeyeceğini unutmayın. Kodunuzun 2. satırı, yukarıdaki 3 ve 4 sonucunu tahmin etmek için kullandığınız 5 ve 7. orijinal değerlerin üzerine yazacaktır (30 ve 40 yerine) ve zaman çizgisi 3'e göre 3 ve 4 olacaktır. 30 ve 40 olmaları için. Dene: 'x [x> = 5 &! is.na (x)] <- c(1:8)[x> = 5 &! is.na (x)]; x [x <5 &! Is.na (x)] <- (c (1: 8) * 10) [x <5 &! Is.na (x)] ' –