Index into a table using a vector of values

3 views (last 30 days)
Suppose I have a table:
T =
var1 var2
a 1
b 2
c 2
d 3
e 4
f 4
g 4
and I am interested in the rows of T where var2 takes values 1, 3, or 4. Is there a direct way to subset into the table using the vector [1; 3; 4], instead of using a for-loop? To be clear, I am interested in obtaining the following output:
subT =
var1 var2
a 1
d 3
e 4
f 4
g 4
I don't see how I can get this using a logical expression. Any thoughts?

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 5 Apr 2016
Edited: Azzi Abdelmalek on 5 Apr 2016
A=[5 1;7 3;12 4;47 4;6 4]
out=A(ismember(A(:,2),[1 3 4]),:)
  1 Comment
Isabel Chen
Isabel Chen on 5 Apr 2016
Thanks Azzi, that makes sense! Your code is written for arrays -- for tables, I would do something like this:
vec = [1; 3; 4];
rows = ismember(T.var2, vec);
subT = T(rows,:);

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!