equivalent of isfield for tables
127 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Jonathan C. Lansey
le 4 Juin 2014
Réponse apportée : Georges-Andre Chaudron
le 19 Jan 2017
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?
0 commentaires
Réponse acceptée
Georges-Andre Chaudron
le 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
0 commentaires
Plus de réponses (1)
Roger Parkyn
le 15 Sep 2015
Modifié(e) : Roger Parkyn
le 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 commentaire
Kelly Kearney
le 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'
Voir également
Catégories
En savoir plus sur Structures dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!