Changes to DimensionNames Property in R2016b
The table
data type is suitable for collecting
column-oriented, heterogeneous data in a single container. Tables
also contain metadata properties such as variable names, row names,
dimension names, descriptions, and variable units. Starting in R2016b,
you can use the dimension names to access table data and metadata
using dot subscripting. To support that, the dimension names must
satisfy the same requirements as the variable names. For backwards
compatibility, tables enforce those restrictions by automatically
modifying dimension names when needed.
Create a table that has row names and variable names.
Number = [8; 21; 13; 20; 11]; Name = {'Van Buren'; 'Arthur'; 'Fillmore'; 'Garfield'; 'Polk'}; Party = categorical({'Democratic'; 'Republican'; 'Whig'; 'Republican'; 'Republican'}); T = table(Number,Party,'RowNames',Name)
T = Number Party ______ __________ Van Buren 8 Democratic Arthur 21 Republican Fillmore 13 Whig Garfield 20 Republican Polk 11 Republican
Display its properties, including the dimension names. The default
values of the dimension names are 'Row'
and 'Variables'
.
T.Properties
ans = struct with fields: Description: '' UserData: [] DimensionNames: {'Row' 'Variables'} VariableNames: {'Number' 'Party'} VariableDescriptions: {} VariableUnits: {} RowNames: {5×1 cell}
Starting in R2016b, you can assign new names to the dimension
names, and use them to access table data. Dimension names must be
valid MATLAB® identifiers, and must not be one of the reserved
names, 'Properties'
, 'RowNames'
,
or 'VariableNames'
.
Assign a new name to the first dimension name, and use it to access the row names of the table.
T.Properties.DimensionNames{1} = 'Name';
T.Name
ans = 5×1 cell array 'Van Buren' 'Arthur' 'Fillmore' 'Garfield' 'Polk'
Create a new table variable called Name
.
When you create the variable, the table modifies its first dimension
name to prevent a conflict. The updated dimension name becomes Name_1
.
T{:,'Name'} = {'Martin'; 'Chester'; 'Millard'; 'James'; 'James'}
Warning: DimensionNames property was modified to avoid conflicting dimension and variable names: 'Name'. See Compatibility Considerations for Using Tables for more details. This will become an error in a future release. T = Number Party Name ______ __________ _________ Van Buren 8 Democratic 'Martin' Arthur 21 Republican 'Chester' Fillmore 13 Whig 'Millard' Garfield 20 Republican 'James' Polk 11 Republican 'James'
T.Properties.DimensionNames
ans = 1×2 cell array 'Name_1' 'Data'
Similarly, if you assign a dimension name that is not a valid MATLAB identifier, the name is modified.
T.Properties.DimensionNames{1} = 'Last Name';
T.Properties.DimensionNames
Warning: DimensionNames property was modified to make the name 'Last Name' a valid MATLAB identifier. See Compatibility Considerations for Using Tables for more details. This will become an error in a future release. ans = 1×2 cell array 'LastName' 'Data'
In R2016b, tables raise warnings when dimension names are not valid identifiers, or conflict with variable names or reserved names, so that you can continue to work with code and tables created with previous releases. If you encounter these warnings, it is recommended that you update your code to avoid them.