Быстрый способ получить все подматрицы A[1:mid, (mid+1):n]

Учитывая матрицу A размерности n x n, моя цель состоит в том, чтобы получить все подматрицы A[1:mid, (mid+1):n] и преобразовать их в список векторов. Здесь mid проходит от 1 до n-1.

Например, если A = matrix(1:16, 4, 4), то результатом будет res = list(as.vector(A[1:1,2:4]), as.vector(A[1:2,3:4]), as.vector(A[1:3,4:4])). Цикл for может достичь этого, но это занимает много времени, когда n огромен.


person yliueagle    schedule 20.03.2018    source источник
comment
Если lapply недостаточно, возможно, вам стоит попробовать Rcpp.   -  person digEmAll    schedule 20.03.2018


Ответы (1)


Создайте функцию, чтобы сделать это в приложении:

solve=function(n,x){
  c(x[1:n,(n+1):dim(x)[2]])
}
sapply(1:3,solve,x=A)
person Ricardo Fernandes Campos    schedule 20.03.2018