Tôi gặp vấn đề sau: Tôi cần nhiều tập hợp con của một ma trận lớn. Trên thực tế tôi chỉ cần xem như đầu vào cho một hàm f(), vì vậy tôi không cần phải thay đổi các giá trị. Tuy nhiên có vẻ như, R là rất chậm cho nhiệm vụ này, hoặc tôi đang làm một cái gì đó sai (có vẻ như nhiều khả năng). Ví dụ đồ chơi minh họa lượng thời gian cần để chọn các cột và sau đó sử dụng chúng trong một hàm khác (trong ví dụ đồ họa này là hàm tổng hợp nguyên thủy()). Là 'điểm chuẩn', tôi cũng kiểm tra thời gian tính toán để tổng hợp toàn bộ ma trận, nhanh hơn đáng ngạc nhiên. Tôi cũng đã thử nghiệm với gói ref, tuy nhiên không thể đạt được bất kỳ đạt được hiệu suất. Vì vậy, câu hỏi quan trọng là làm thế nào để subset ma trận mà không cần sao chép nó? Tôi đánh giá cao sự giúp đỡ nào, Cảm ơn!Việc nạp nhanh ma trận trong R
library(microbenchmark)
library(ref)
m0 <- matrix(rnorm(10^6), 10^3, 10^3)
r0 <- refdata(m0)
microbenchmark(m0[, 1:900], sum(m0[, 1:900]), sum(r0[,1:900]), sum(m0))
Unit: milliseconds expr min lq mean median uq m0[, 1:900] 10.087403 12.350751 16.697078 18.307475 19.054157 sum(m0[, 1:900]) 11.067583 13.341860 17.286514 19.123748 19.990661 sum(r0[, 1:900]) 11.066164 13.194244 16.869551 19.204434 20.004034 sum(m0) 1.015247 1.040574 1.059872 1.049513 1.067142 max neval 58.238217 100 25.664729 100 23.505308 100 1.233617 100
Nhiệm vụ chuẩn của cách tổng hợp toàn bộ ma trận mất 1,059872 mili giây và nhanh hơn so với các chức năng khác khoảng 16 lần.
tôi nhận được một thông báo lỗi khi Tôi thử ví dụ của bạn: 'Lỗi trong r0 [, 1: 900]: số không chính xác của các tham số' – 5th
' thư viện ('ref') 'sửa chữa nó – dvantwisk
OK vì vậy các tiêu chí ở đây cho một giải pháp là gì? Liệu nó có phải nhanh hơn những gì bạn đang làm bây giờ hay nó sẽ nhanh hơn tổng hợp toàn bộ ma trận? –