测试 table Matlab 中是否存在列
Test for existance of column in table Matlab
我有以下 table, T:
Hold Min Max
_________ ___ ____
0.039248 0 0.05
0.041935 0 0.05
0.012797 0 0.05
0.0098958 0 0.05
0.014655 0 0.05
如何测试 table 中的列是否存在?例如 isfield(T,'Hold')
returns 0
。 Exist
、isstruct
也不行。我需要测试来简单地 return 一个真或假的结果。
例如:
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(Age,Height,Weight,BloodPressure,...
'RowNames',LastName);
myquery = 'Age';
columnexists = ismember(myquery, T.Properties.VariableNames)
Returns:
columnexists =
1
您可以转换为 struct
然后使用 isfield
:
isfield(table2struct(T),'Hold')
ismember('myFieldName', myTable.Properties.VariableNames)
或者放入一个不错的函数中:
function hasField = tablehasfield(t, fieldName)
hasField = ismember(fieldName, t.Properties.VariableNames);
end
函数使用方法:
x = [2 5 3];
t = table(x); % create table with a field called 'x'
if tablehasfield(t, 'x')
% do something
end
如果主题(Table 在这种情况下)不存在,通常的测试会导致脚本崩溃:isfield(), ismember(), isempty()
这些都有这个问题。
exist()
检查不会崩溃,但仅适用于 table,因此您仍然需要检查该列是否存在,
你问列中是否有数据:
%define table
Hold = [0.039248 0.041935 0.012797 0.0098958 0.014655]';
Min=[0 0 0 0 0]';
Max = [0.05 0.05 0.05 0.05 0.05]';
T = table(Hold,Min,Max);
%test table
if exist('T')
myquery = 'Max';
if ismember(myquery, T.Properties.VariableNames)
col = find(strcmp(myquery, T.Properties.VariableNames));
T(:,col)
end
end
...并将其显示为奖励
我有以下 table, T:
Hold Min Max
_________ ___ ____
0.039248 0 0.05
0.041935 0 0.05
0.012797 0 0.05
0.0098958 0 0.05
0.014655 0 0.05
如何测试 table 中的列是否存在?例如 isfield(T,'Hold')
returns 0
。 Exist
、isstruct
也不行。我需要测试来简单地 return 一个真或假的结果。
例如:
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(Age,Height,Weight,BloodPressure,...
'RowNames',LastName);
myquery = 'Age';
columnexists = ismember(myquery, T.Properties.VariableNames)
Returns:
columnexists =
1
您可以转换为 struct
然后使用 isfield
:
isfield(table2struct(T),'Hold')
ismember('myFieldName', myTable.Properties.VariableNames)
或者放入一个不错的函数中:
function hasField = tablehasfield(t, fieldName)
hasField = ismember(fieldName, t.Properties.VariableNames);
end
函数使用方法:
x = [2 5 3];
t = table(x); % create table with a field called 'x'
if tablehasfield(t, 'x')
% do something
end
如果主题(Table 在这种情况下)不存在,通常的测试会导致脚本崩溃:isfield(), ismember(), isempty()
这些都有这个问题。
exist()
检查不会崩溃,但仅适用于 table,因此您仍然需要检查该列是否存在,
你问列中是否有数据:
%define table
Hold = [0.039248 0.041935 0.012797 0.0098958 0.014655]';
Min=[0 0 0 0 0]';
Max = [0.05 0.05 0.05 0.05 0.05]';
T = table(Hold,Min,Max);
%test table
if exist('T')
myquery = 'Max';
if ismember(myquery, T.Properties.VariableNames)
col = find(strcmp(myquery, T.Properties.VariableNames));
T(:,col)
end
end
...并将其显示为奖励