equivalent of isfield for tables

119 views (last 30 days)
I'd like to know if my Matlab table has a particular column. If it was a structure I'd use isfield. Is there a built in function for this?

Accepted Answer

Georges-Andre Chaudron
Georges-Andre Chaudron on 19 Jan 2017
I would also like to suggest using ismember()
For instance:
f1 = 1; f2 = 10; t = table(f1,f2)
t =
f1 f2
__ __
1 10
ismember('f1', t.Properties.VariableNames)
logical
1
It also works for a range of values:
ismember({'f0','f1','f2'}, t.Properties.VariableNames)
1×3 logical array
0 1 1

More Answers (1)

Roger Parkyn
Roger Parkyn on 15 Sep 2015
Edited: Roger Parkyn on 15 Sep 2015
This issue was also raised by Pawel Kusmierek ( 123242-why-isfield-does-not-work-with-tables-but-fieldnames-does ). He gave a reasonably tidy work-around, in short:
name_exists = any(strcmp('Var_Name',fieldnames(Table_Name)))
  1 Comment
Kelly Kearney
Kelly Kearney on 15 Sep 2015
Note that fieldnames returns all object properties, which for a table includes both variable names and the Properties structure. To get just the column/variable names, query the VariableNames property:
t = table({'one';'two'}, [1;2])
t =
Var1 Var2
_____ ____
'one' 1
'two' 2
>> t.Properties.VariableNames
ans =
'Var1' 'Var2'
>> fieldnames(t)
ans =
'Var1'
'Var2'
'Properties'

Sign in to comment.

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!