Subset Table using an array of strings

12 views (last 30 days)
Metin Akyol
Metin Akyol on 12 Nov 2021
Commented: Metin Akyol on 12 Nov 2021
I am using the following code to select a subset of my table based on column names:
table_subset = table(:,ismember(table.Properties.VariableNames, {'col1' 'col2'}));
However, I would like to provide the cell input based on an existing array of column names, like so:
list_of_cols = ['col1' 'col2']
table_subset = table(:,ismember(table.Properties.VariableNames, list_of_cols));
But I am getting an empty table.

Answers (1)

Dave B
Dave B on 12 Nov 2021
Edited: Dave B on 12 Nov 2021
I think you want
list_of_cols = {'col1' 'col2'}
list_of_cols = 1×2 cell array
{'col1'} {'col2'}
or
list_of_cols = ["col1" "col2"]
list_of_cols = 1×2 string array
"col1" "col2"
because list_of_cols as you wrote it evaluates to the wrong thing:
list_of_cols = ['col1' 'col2']
list_of_cols = 'col1col2'
Here's a quick test:
t=table(1,2,3);
list_of_cols = {'Var1' 'Var3'};
t(:,ismember(t.Properties.VariableNames,list_of_cols))
ans = 1×2 table
Var1 Var3 ____ ____ 1 3

Community Treasure Hunt

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

Start Hunting!