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