Hello all,
I am working with a large matrix, but I am only interested in keeping the nth largest values of every row, making the rest of values equal to 0.
I will use a simple example:
n = 5 # Number of dimensions
A = matrix(runif(n^2), n) # Random matrix example
How could I keep the largest k=2
values of every row, while making the rest of values equal to 0 ?
Thanks in advance for any help!
n = 5 # Number of dimensions
A = matrix(runif(n^2), n) # Random matrix example
do_a_row <- function(row,k=2){
keepers <- tail(sort(row),n=k)
row[which(! row %in% keepers)] <- 0
row
}
A
(B <- t(apply(A,MARGIN = 1,do_a_row)))
2 Likes
Thanks @nirgrahamuk ! That was exactly what I was looking for
system
Closed
March 7, 2022, 11:11am
4
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed. If you have a query related to it or one of the replies, start a new topic and refer back with a link.