Tôi đang viết mã R để tạo một ma trận vuông. Vì vậy, cách tiếp cận của tôi là:Cách tốt nhất để phân bổ ma trận trong R, NULL vs NA?
- Phân bổ một ma trận kích thước chính xác
- Vòng qua mỗi phần tử của ma trận của tôi và điền nó với một giá trị thích hợp
Câu hỏi của tôi là thực sự đơn giản: là những gì cách tốt nhất để phân bổ trước ma trận này là gì? Như vậy đến nay, tôi có hai cách:
> x <- matrix(data=NA,nrow=3,ncol=3)
> x
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
[3,] NA NA NA
hoặc
> x <- list()
> length(x) <- 3^2
> dim(x) <- c(3,3)
> x
[,1] [,2] [,3]
[1,] NULL NULL NULL
[2,] NULL NULL NULL
[3,] NULL NULL NULL
Theo như tôi thấy, trước đây là một phương pháp ngắn gọn hơn sau này. Ngoài ra, trước đây điền vào ma trận với NA, trong khi sau đó được lấp đầy với NULL.
Cách nào "tốt hơn" để thực hiện việc này? Trong trường hợp này, tôi xác định "tốt hơn" là "hiệu suất tốt hơn", bởi vì đây là tính toán thống kê và hoạt động này sẽ diễn ra với các tập dữ liệu lớn.
Trong khi trước đây ngắn gọn hơn, nó không phải là dễ hiểu hơn, vì vậy tôi cảm thấy như thế này có thể đi theo một trong hai cách.
Ngoài ra, sự khác biệt giữa NA và NULL trong R là gì? ? NA và? NULL cho tôi biết rằng "NA" có độ dài "1" trong khi NULL có độ dài là "0" - nhưng có nhiều hơn ở đây không? Hoặc một thực hành tốt nhất? Điều này sẽ ảnh hưởng đến phương pháp nào tôi sử dụng để tạo ma trận của mình.
Không được hỏi, tại sao bạn muốn * lặp * qua các phần tử của ma trận? Có thể bạn có thể sử dụng một hoạt động vectorized thay thế? Đó sẽ là câu hỏi tiếp theo của bạn ở đây! :) – Harlan
@ Harlan đó là cơ bản những gì tôi nhận được trong câu hỏi này ở đây: http://stackoverflow.com/questions/1719447/outer-equivalent-for-non-vector-lists-in-r. Nếu bạn có một gợi ý, tôi rất muốn nghe nó! – poundifdef