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

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 таблицы повышают предупреждения, когда имена размерности не являются допустимыми идентификаторами или конфликтом с именами переменных или зарезервированными именами, так, чтобы можно было продолжить работать с кодом и таблицами, составленными с предыдущими релизами. Если вы сталкиваетесь с этими предупреждениями, рекомендуется, чтобы вы обновили свой код, чтобы избежать их.