Add table variable and assign constant string
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Bryan Wilson
le 7 Nov 2016
Commenté : Peter Perkins
le 10 Nov 2016
I want to add a new variable to a table and assign a string to that variable for every row of the table.
T = table({'A';'B';'C'},[1;2;1],[6;7;5],...
'VariableNames',{'Section' 'Data1' 'Data2'})
newString = "Project A"
T.newVar(:) = {newString}
T =
Section Data1 Data2 newVar
_______ _____ _____ __________
'A' 1 6 [1x0 cell]
'B' 2 7 [1x0 cell]
'C' 1 5 [1x0 cell]
What I'd like is....T=
Section Data1 Data2 newVar
_______ _____ _____ __________
'A' 1 6 'Project A'
'B' 2 7 'Project A'
'C' 1 5 'Project A'
0 commentaires
Réponse acceptée
Walter Roberson
le 7 Nov 2016
T.newVar = repmat({newString}, size(T,1), 1)
Plus de réponses (1)
Peter Perkins
le 9 Nov 2016
This slight change to the original code also works:
>> T.newVar(:,1) = newString % note the ",1"
T =
Section Data1 Data2 newVar
_______ _____ _____ ___________
'A' 1 6 "Project A"
'B' 2 7 "Project A"
'C' 1 5 "Project A"
2 commentaires
Guillaume
le 10 Nov 2016
That is interesting. Is it documented anywhere?
It also does not make sense that one syntax works and the other doesn't since for a column vector (:) and (:, 1) should be exactly equivalent.
Peter Perkins
le 10 Nov 2016
Using (:,1) to create a new column vector is standard MATLAB syntax, and is sometimes needed to make sure your result becomes a column vector.
The issue here is that newVar doesn't yet exist as a column vector when you make the assignment. But in a table, it does seem like it shouldn't be needed. I will make a note to have that looked into.
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!