R ฟังก์ชั่นที่จะส่งคืนจำนวนรายการในรายการ?
R ฟังก์ชั่นที่จะส่งคืนจำนวนรายการในรายการ?
คำตอบ:
รับหรือกำหนดความยาวของเวกเตอร์ (รวมถึงรายการ) และปัจจัยและของวัตถุ R อื่น ๆ ที่กำหนดวิธีการไว้
รับความยาวของแต่ละองค์ประกอบของรายการหรือเวกเตอร์อะตอม (is.atomic) เป็นเวกเตอร์จำนวนเต็มหรือตัวเลข
คำแนะนำสำหรับR
ผู้มาใหม่เช่นฉันระวังสิ่งต่อไปนี้เป็นรายการของวัตถุชิ้นเดียว :
> mylist <- list (1:10)
> length (mylist)
[1] 1
ในกรณีนี้คุณไม่ได้มองหาความยาวของรายการ แต่เป็นองค์ประกอบแรก:
> length (mylist[[1]])
[1] 10
นี่คือรายการ "จริง":
> mylist <- list(1:10, rnorm(25), letters[1:3])
> length (mylist)
[1] 3
นอกจากนี้ดูเหมือนว่าจะR
พิจารณา data.frame เป็นรายการ:
> df <- data.frame (matrix(0, ncol = 30, nrow = 2))
> typeof (df)
[1] "list"
ในกรณีนี้คุณอาจสนใจncol()
และnrow()
มากกว่าlength()
:
> ncol (df)
[1] 30
> nrow (df)
[1] 2
แม้ว่าlength()
จะใช้งานได้ (แต่เป็นเคล็ดลับเมื่อ data.frame ของคุณมีเพียงคอลัมน์เดียว):
> length (df)
[1] 30
> length (df[[1]])
[1] 2
ฉันใช้เวลาหลายปีในการพยายามคิดออก แต่มันง่ายมาก! คุณสามารถใช้length(·)
. length(mylist)
จะบอกคุณจำนวนวัตถุmylist
มี
... และเพิ่งรู้ว่ามีคนตอบไปแล้ว - ขออภัย!
มาสร้างรายการว่าง (ไม่จำเป็น แต่น่ารู้):
> mylist <- vector(mode="list")
มาใส่บางสิ่งลงไป - 3 องค์ประกอบ / ดัชนี / แท็ก (อะไรก็ได้ที่คุณต้องการเรียกมัน) แต่ละองค์ประกอบมีจำนวนองค์ประกอบที่แตกต่างกัน:
> mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2))
หากคุณสนใจเพียงจำนวนส่วนประกอบในรายการให้ใช้:
> length(mylist)
[1] 3
หากคุณสนใจเกี่ยวกับความยาวขององค์ประกอบในองค์ประกอบเฉพาะของรายการให้ใช้: (ทั้งคู่อ้างอิงส่วนประกอบเดียวกันที่นี่)
length(mylist[[1]])
[1] 10
length(mylist[["record1"]]
[1] 10
หากคุณสนใจเกี่ยวกับความยาวขององค์ประกอบทั้งหมดในส่วนประกอบทั้งหมดของรายการให้ใช้:
> sum(sapply(mylist,length))
[1] 17
คุณยังสามารถใช้unlist()
ซึ่งมักมีประโยชน์ในการจัดการรายการ:
> mylist <- list(A = c(1:3), B = c(4:6), C = c(7:9))
> mylist
$A
[1] 1 2 3
$B
[1] 4 5 6
$C
[1] 7 8 9
> unlist(mylist)
A1 A2 A3 B1 B2 B3 C1 C2 C3
1 2 3 4 5 6 7 8 9
> length(unlist(mylist))
[1] 9
unsist () เป็นวิธีง่ายๆในการเรียกใช้ฟังก์ชันอื่น ๆ ในรายการเช่น:
> sum(mylist)
Error in sum(mylist) : invalid 'type' (list) of argument
> sum(unlist(mylist))
[1] 45