R2016b 中对 DimensionNames 属性的更改
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 中,当维度名称不是有效的标识符或者与变量名称或保留名称冲突时,表将会发出警告,您可以继续处理用早期版本创建的代码和表。如果您遇到这些警告,建议您对代码进行更新以避免出现这些警告。