Изменения свойства DimensionNames в R2016b

The table тип данных подходит для сбора ориентированных на столбцы гетерогенных данных в одном контейнере. Таблицы также содержат свойства метаданных, такие как имена переменных, имена строк, имена размерностей, описания и переменные модули. Начиная с R2016b, вы можете использовать имена размерностей для доступа к данным таблицы и метаданным с помощью индексирования на точку. Для этого имена размерностей должны удовлетворять тем же требованиям, что и имена переменных. Для обратной совместимости таблицы применяют эти ограничения, автоматически изменяя имена размерностей при необходимости.

Составьте таблицу с именами строк и имен переменных.

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

Отображение его свойств, включая имена размерностей. Имена значений по умолчанию размерности 'Row' и 'Variables'.

T.Properties
ans = 

  struct with fields:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {'Number'  'Party'}
    VariableDescriptions: {}
           VariableUnits: {}
                RowNames: {5×1 cell}

Начиная с R2016b, вы можете присваивать новые имена именам размерностей и использовать их для доступа к данным таблицы. Имена размерностей должны быть допустимыми MATLAB® идентификаторы, и не должны быть одним из зарезервированных имен, 'Properties', 'RowNames', или 'VariableNames'.

Присвойте новое имя первой размерности и используйте его для доступа к именам строк таблицы.

T.Properties.DimensionNames{1} = 'Name';
T.Name
ans =

  5×1 cell array

    'Van Buren'
    'Arthur'
    'Fillmore'
    'Garfield'
    'Polk'

Создайте новую табличную переменную с именем Name. При создании переменной в таблице изменяется имя первой размерности, чтобы предотвратить конфликт. Обновленное имя размерности становится 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'

Точно так же, если вы присвоите имя размерности, которое не является допустимым идентификатором MATLAB, имя будет изменено.

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'

В R2016b таблицы вызывают предупреждения, когда имена размерностей не являются допустимыми идентификаторами, или конфликтуют с именами переменных или зарезервированными именами, так что можно продолжать работать с кодом и таблицами, созданными в предыдущих релизах. Если вы столкнулись с этими предупреждениями, рекомендуется обновить код, чтобы избежать их.