Saya memiliki sensor yang mengukur variabel dan ketika tidak ada koneksi, ia selalu mengembalikan nilai terakhir yang dilihat, bukan NA
. Jadi di vektor saya, saya ingin mengganti nilai identik ini dengan nilai yang dimasukkan (misalnya dengan na.approx
).
set.seed(3)
vec <- round(runif(20)*10)
#### [1] 2 8 4 3 6 6 1 3 6 6 5 5 5 6 9 8 1 7 9 3
Tapi saya hanya ingin barisan yang lebih besar dari 2 (3 atau lebih angka identik) karena 2 angka identik bisa muncul secara alami. (dalam contoh sebelumnya, urutan yang diberi tag adalah 5 5 5
)
Saya mencoba melakukannya dengan diff
untuk menandai titik identik saya (c(0, diff(vec) == 0)
) tetapi saya tidak tahu bagaimana menangani kondisi length == 2
...
EDIT hasil yang saya harapkan akan seperti ini:
#### [1] 2 8 4 3 6 6 1 3 6 6 5 NA NA 6 9 8 1 7 9 3
(Nilai identik kedua dari barisan 3 atau lebih kemungkinan besar juga merupakan nilai yang salah)
Terima kasih