ฉันมีเซ็นเซอร์ที่ใช้วัดตัวแปร และเมื่อไม่มีการเชื่อมต่อ มันจะส่งคืนค่าสุดท้ายที่เห็นแทน NA
เสมอ ดังนั้นในเวกเตอร์ของฉัน ฉันต้องการแทนที่ค่าที่เหมือนกันเหล่านี้ด้วยค่าที่นัย (เช่น 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
แต่ฉันต้องการเฉพาะลำดับที่มากกว่า 2 (ตัวเลขที่เหมือนกัน 3 ตัวขึ้นไป) เพราะตัวเลขที่เหมือนกัน 2 ตัวสามารถปรากฏได้อย่างเป็นธรรมชาติ (ในตัวอย่างก่อนหน้านี้ ลำดับในการแท็กจะเป็น 5 5 5
)
ฉันพยายามใช้ diff
เพื่อแท็กจุดที่เหมือนกันของฉัน (c(0, diff(vec) == 0)
) แต่ฉันไม่รู้ว่าจะจัดการกับเงื่อนไข length == 2
อย่างไร...
แก้ไข ผลลัพธ์ที่คาดหวังของฉันอาจเป็นเช่นนี้:
#### [1] 2 8 4 3 6 6 1 3 6 6 5 NA NA 6 9 8 1 7 9 3
(ค่าที่เหมือนกันลำดับที่สองของลำดับตั้งแต่ 3 ขึ้นไปก็อาจเป็นค่าที่ผิดเช่นกัน)
ขอบคุณ