ใน R ฉันมีองค์ประกอบและเวกเตอร์x
v
ฉันต้องการที่จะหาดัชนีแรกขององค์ประกอบในการที่จะมีค่าเท่ากับv
x
ฉันรู้ว่าวิธีหนึ่งในการทำเช่นนี้คือ: which(x == v)[[1]]
แต่ดูเหมือนว่าจะไม่มีประสิทธิภาพมากเกินไป มีวิธีโดยตรงมากกว่าที่จะทำหรือไม่
สำหรับคะแนนโบนัสมีฟังก์ชั่นที่ใช้งานx
ได้หรือไม่ถ้าเป็นเวคเตอร์? นั่นคือมันควรจะกลับเวกเตอร์ของดัชนีระบุตำแหน่งขององค์ประกอบของแต่ละที่ในx
v
which(x == v)[[1]]
ไม่ใช่
which(x == v)[[1]]
จึงไม่มีประสิทธิภาพมากนัก มันเป็นตัวดำเนินการเปรียบเทียบหนึ่งรายการ (==
) ที่ใช้กับองค์ประกอบเวกเตอร์ทั้งหมดและอีกหนึ่งส่วนย่อยในดัชนี (which
) แค่นั้นแหละ. ไม่มีสิ่งใดที่ควรเกี่ยวข้องตราบใดที่คุณไม่ได้ใช้งานซ้ำ 10.000 ครั้งในฟังก์ชันนี้ โซลูชันอื่น ๆ เช่นmatch
และPosition
อาจไม่ส่งคืนข้อมูลได้มากเท่าที่which
ควร แต่ไม่จำเป็นต้องมีประสิทธิภาพมากกว่า