Replace table elements in more than one row
    20 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Davindra Usov
 il 22 Mar 2023
  
    
    
    
    
    Commentato: Davindra Usov
 il 23 Mar 2023
            Hi,
I have outputted a vector (V) which contains the row indices of elements in a table (T) that contain the string 'rpm'.
T has 3 columns and I initially set all of the elements in column 3 to zero. I now wish to replace all elements in column 3 that have these row indices (so only row 3 and row 7) with a value of 6. I have tried doing this but it doesn't work:
V = [3;7]; % row indices
for i = 1:numel(V)
    T(V(i), 3) = repmat(6, numel(V), 1);
end 
I get an error saying To assign to or create a variable in a table, the number of rows must match the height of the
table.
Thank you 
1 Commento
  VBBV
      
      
 il 23 Mar 2023
				T = table(zeros(7,1),zeros(7,1),zeros(7,1),zeros(7,1))  % your table
V = [3;7]; % row indices
T(V, 3) = [repmat({6},numel(V),1)]  % put the element in cell array when assigning
Risposta accettata
  Cameron
    
 il 22 Mar 2023
        You should look into how MATLAB does its indexing. You don't have to loop through the array to change a value. Just do it like this:
T = zeros(10,3); %i just picked 10 rows of data
indx = [3,7];
T(indx,3) = 6
Più risposte (1)
  Cris LaPierre
    
      
 il 22 Mar 2023
        
      Modificato: Cris LaPierre
    
      
 il 22 Mar 2023
  
      You can, but the code you wrote is trying to replace a single element with a vector, hence the error message.
When you are trying to replace each element with the same value, you do not need to use repmat. Perhaps you are trying to do this? 
tb = table(zeros(4,1))
tb.Var1([1 3]) = 6
% you could also use repmat if you want
tb.Var1([2 4]) = repmat(10,2,1)
0 Commenti
Vedere anche
Categorie
				Scopri di più su Data Type Identification in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



