Tôi biết rằng các giá trị NULL trong danh sách đôi khi có thể là trip mọi người. Tôi tò mò tại sao trong một ví dụ cụ thể lapply
và rapply
dường như đối xử với các giá trị NULL
khác nhau.Tại sao lại xử lý rapply và lapply NULL một cách khác nhau?
l <- list(a = 1, c = NULL, d = 3)
lapply(l,is.null)
$a
[1] FALSE
$c
[1] TRUE
$d
[1] FALSE
Cho đến nay rất tốt. Làm thế nào về nếu chúng ta làm điều tương tự với rapply
?
rapply(l, is.null, how = "replace")
$a
[1] FALSE
$c
list()
$d
[1] FALSE
Ví dụ này rất đơn giản và không đệ quy, nhưng bạn thấy cùng một hành vi trong rapply
với danh sách lồng nhau.
Câu hỏi của tôi là lý do tại sao? Nếu, như được quảng cáo trong ?rapply
, đó là 'phiên bản đệ quy của lapply', tại sao chúng hoạt động rất khác trong trường hợp này?
+1 Để chỉ ra rằng 'NULL' là một' danh sách cặp đôi trống '. Vì vậy, có vẻ như bạn đang nói rằng 'rapply' không thể (hoặc không) phân biệt giữa' NULL' và 'pairlist()'. – joran
@joran 'giống hệt nhau (pairlist(), NULL)' :) – Owen