Potrzebuję wstawić wektor po przekątnej do macierzy w dowolnym miejscu. Wiem, jak wstawić wektor w pionie lub w poziomie, ale nie mogę tego zrobić po przekątnej.Jak wstawić wartości z wektora po przekątnej do macierzy w R?
mam:
A <- matrix(nrow=6,ncol=6)
b <- c(1:4)
pożądanego rezultatu (jeśli chcę wstawić wektora w pozycji A[3,2]
), byłoby:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] NA NA NA NA NA NA
[2,] NA NA NA NA NA NA
[3,] NA 1 NA NA NA NA
[4,] NA NA 2 NA NA NA
[5,] NA NA NA 3 NA NA
[6,] NA NA NA NA 4 NA
Również chcę móc wstawić wektor, aby uzyskać tę macierz (od A[4,1]
):
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] NA NA NA 4 NA NA
[2,] NA NA 3 NA NA NA
[3,] NA 2 NA NA NA NA
[4,] 1 NA NA NA NA NA
[5,] NA NA NA NA NA NA
[6,] NA NA NA NA NA NA
Eleganckie rozwiązanie! Oto odpowiednia funkcja: wypełnienie <- function (A, b, i, j, up = FALSE) { k <- seq_along (b) - 1 # utwórz indeks A [cbind (i + ifelse (up, - 1, 1) * k, j + k)] <- b powrót (A) } wypełnienie (A, b, 3, 2) wypełnienie (A, b, 4, 1, PRAWDA) –