Giả sử tôi có ma trận n và 2 và hàm nhận 2-vectơ là một trong các đối số của nó. Tôi muốn áp dụng hàm cho mỗi hàng của ma trận và nhận được một vectơ. Làm thế nào để làm điều này trong R?Áp dụng một hàm cho mỗi hàng của ma trận hoặc khung dữ liệu
Ví dụ, tôi muốn để tính mật độ phân phối bình thường tiêu chuẩn 2D trên ba điểm:
bivariate.density(x = c(0, 0), mu = c(0, 0), sigma = c(1, 1), rho = 0){
exp(-1/(2*(1-rho^2))*(x[1]^2/sigma[1]^2+x[2]^2/sigma[2]^2-2*rho*x[1]*x[2]/(sigma[1]*sigma[2]))) * 1/(2*pi*sigma[1]*sigma[2]*sqrt(1-rho^2))
}
out <- rbind(c(1, 2), c(3, 4), c(5, 6))
Làm thế nào để áp dụng các chức năng để mỗi hàng của out
?
Làm cách nào để chuyển giá trị cho các đối số khác ngoài các điểm cho hàm theo cách bạn chỉ định?
Cảm ơn! Điều gì nếu các hàng của ma trận không phải là arg đầu tiên của hàm? Làm thế nào để xác định mà arg của hàm mỗi hàng của ma trận được gán cho? – Tim
Đọc trợ giúp cho 'apply()' - nó quét theo hàng (khi arg thứ hai là 1, khác theo cột), và hàng hiện tại (hoặc col) luôn là đối số đầu tiên. Đó là cách mọi thứ được định nghĩa. –
@Tim: nếu bạn sử dụng hàm R bên trong và hàng không phải là arg đầu tiên, hãy làm như Dirk đã làm và thực hiện chức năng tùy chỉnh của riêng bạn, nơi hàng ** là ** arg đầu tiên. –