2015-08-21 1 views
-1

j'ai une matrice comme:Limiter le nombre d'éléments dans chaque ligne de la matrice

A 
    [,1] [,2] [,3] [,4] 
[1,] 1 3 5 7 
[2,] 2 4 6 8 

et un vecteur de nombre d'éléments à être limités dans chaque rangée (d'autres éléments seront transforment à 0).

c 
[1] 2 3 

Je souhaite obtenir (avec au moins boucle possible):

B 
    [,1] [,2] [,3] [,4] 
[1,] 1 3 0 0 
[2,] 2 4 6 0 

Répondre

0
m <- matrix(1:8, nrow = 2) 
sel <- 2:3 

#create a integer matrix of col numbers 
#use this to create a logical matrix indicating 
#if the col numbers are greater than the threshold 
#this relies on vector recycling 
subs <- col(m) > sel 

#assign to subset 
m[subs] <- 0 
#  [,1] [,2] [,3] [,4] 
#[1,] 1 3 0 0 
#[2,] 2 4 6 0