การค้นหาดัชนีคอลัมน์ตามชื่อใน R [ปิด]


11

ในกรอบข้อมูลฉันต้องการรับดัชนีของคอลัมน์ตามชื่อ ตัวอย่างเช่น:

x <- data.frame(foo=c('a','b','c'),bar=c(4,5,6),quux=c(4,5,6))

ฉันต้องการทราบดัชนีคอลัมน์สำหรับ "บาร์"

ฉันมากับสิ่งต่อไปนี้ แต่ดูเหมือนไม่เหมาะสม มีบิวด์อินตรงไปตรงมามากกว่าที่ฉันหายไปไหม?

seq(1,length(names(x)))[names(x) == "bar"]
[1] 2

3
match("bar",names(x))ใช้งานได้แม้ว่าmatchจะมีประโยชน์มากกว่าเมื่ออาร์กิวเมนต์แรกเป็นเวกเตอร์
พระคาร์ดินัล

คุณต้องการดัชนีของคอลัมน์จริงๆหรือ คุณยังสามารถใช้ x [, "bar"] เพื่อรับทั้งคอลัมน์ซึ่งคล้ายกับ x $ bar ปกติ และในทั้งสองกรณีให้ห้อยแถว: x [2: 3, "bar"] หรือ x $ bar [2: 3] หากคุณต้องการป้อนดัชนีให้เป็นกิจวัตรที่ต้องใช้ดัชนีแน่นอนว่าไม่มีประโยชน์
เวย์น

Bah มันทำให้เกิดความสับสนขึ้นสัญญาณดอลลาร์ของฉัน บรรทัดล่างคือว่ามีสองวิธีในการใช้ชื่อคอลัมน์วิธีดอลลาร์สัญญาณและรวมเป็นตัวห้อย
เวย์น

3
คำถามนี้ดูเหมือนจะไม่ได้อยู่ในหัวข้อเพราะเป็นเรื่องเกี่ยวกับวิธีการทำบางสิ่งใน R และไม่เกี่ยวกับประเด็นทางสถิติที่เกี่ยวข้อง
gung - Reinstate Monica

คำตอบ:



11

เพียงเพื่อเพิ่มความเป็นไปได้อื่น ๆ :
โดยปกติคุณสามารถใช้grepและมันเป็น decedents (เช่น grepl เพื่อทำงานประเภทนี้ในลักษณะที่ซับซ้อนมากขึ้นโดยใช้นิพจน์ทั่วไป

ในตัวอย่างของคุณคุณสามารถรับดัชนีคอลัมน์ด้วย:

grep("^bar$", colnames(x)) หรือ grep("^bar$", names(x))

^และ$ตัวละครเมตาสำหรับจุดเริ่มต้นและจุดสิ้นสุดของสตริงตามลำดับ

ตรวจสอบ? grep และโดยเฉพาะอย่างยิ่ง? regex สำหรับข่าวสารเพิ่มเติม (เช่นคุณสามารถคว้าชื่อ / การแข่งขันบางส่วนเท่านั้นหรือค่าตอบแทนเป็นสตริงตัวเองหรือเวกเตอร์ตรรกะ, ... )

สำหรับฉันgrepR-ish มากขึ้น

ที่เกี่ยวข้องอย่างยิ่งคือแพ็คเกจล่าสุดโดย Hadley Wickhem: stringr , แพ็คเกจสำหรับ "การประมวลผลสตริงที่ทันสมัยและสอดคล้องกัน" รวมถึงฟังก์ชัน grep like เขาเพิ่งตีพิมพ์บทความลงใน R Journal

ดูคำตอบของฉันใน stackoverflow ในปัญหาที่เหมือนกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.