Có bất kỳ lý do tại sao tôi nên sử dụng
map(<list-like-object>, function(x) <do stuff>)
thay vì
lapply(<list-like-object>, function(x) <do stuff>)
đầu ra phải giống nhau và các điểm chuẩn tôi thực hiện dường như hiển thị lapply
nhanh hơn một chút (nó phải nhưmap
cần phải đánh giá tất cả các đầu vào không đánh giá tiêu chuẩn).
Vì vậy, có lý do tại sao cho các trường hợp đơn giản như vậy tôi thực sự nên xem xét chuyển sang purrr::map
? Tôi không hỏi ở đây về việc thích hay không thích của ai đó về cú pháp, các chức năng khác được cung cấp bởi purrr, v.v., nhưng nghiêm túc về việc so sánh purrr::map
với lapply
giả định sử dụng đánh giá tiêu chuẩn, tức là map(<list-like-object>, function(x) <do stuff>)
. Có bất kỳ lợi thế nào purrr::map
về hiệu suất, xử lý ngoại lệ, vv? Các ý kiến dưới đây cho thấy rằng nó không, nhưng có lẽ ai đó có thể giải thích thêm một chút?
~{}
lambda phím tắt (có hoặc không có {}
con dấu thỏa thuận đối với tôi cho đồng bằng purrr::map()
. Các loại thực thi của purrr::map_…()
rất tiện dụng và ít tù hơn vapply()
. purrr::map_df()
là một chức năng siêu đắt nhưng nó cũng đơn giản hoá mã. Có hoàn toàn không có gì sai với gắn bó với cơ sở R [lsv]apply()
, mặc dù .
purrr
công cụ. Quan điểm của tôi là: tidyverse
tuyệt vời cho các công cụ phân tích / tương tác / báo cáo, không phải cho lập trình. Nếu bạn đang phải sử dụng lapply
hoặc map
sau đó bạn đang lập trình và có thể kết thúc một ngày với việc tạo một gói. Sau đó, càng ít phụ thuộc tốt nhất. Thêm vào đó, đôi khi tôi thấy mọi người sử dụng map
với cú pháp khá tối nghĩa sau đó. Và bây giờ tôi thấy thử nghiệm biểu diễn: nếu bạn đã quen với apply
gia đình: hãy bám lấy nó.
tidyverse
mặc dù, bạn có thể được hưởng lợi từ cú pháp%>%
hàm và ẩn danh~ .x + 1