Add table variable and assign constant string

24 views (last 30 days)
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'

Accepted Answer

Walter Roberson
Walter Roberson on 7 Nov 2016
T.newVar = repmat({newString}, size(T,1), 1)
  2 Comments
Guillaume
Guillaume on 7 Nov 2016
Edited: Guillaume on 7 Nov 2016
Well, actually, if string means the new string type introduced in 2016b (as the double quotes would indicate), then:
T.newVar = repmat(string('Project A'), height(T), 1)

Sign in to comment.

More Answers (1)

Peter Perkins
Peter Perkins on 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 Comments
Guillaume
Guillaume on 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
Peter Perkins on 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.

Sign in to comment.

Categories

Find more on Characters and Strings in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!