How does one use a string vector to select rows from a table. The vector length and the table height are unequal
1 次查看(过去 30 天)
显示 更早的评论
The elements of vector (X) correspond to the 1st column of the table (T).
lenght(X) << height(T)
I want to use X to extract the corresponding rows the table
Note that the vector elements are unique e.g. X = ["AGAP004746", "AGAP004753", "AGAP004756"]
Some of the rows are shown below. The elements of T(:, 1) are not unique.
AGAP004746 CPIJ018891-PA 1:1 1082603
AGAP004747 CPIJ011183-PA 1:1 1002379
AGAP004749 CPIJ006245-PA 1:1 1102192
AGAP004750 CPIJ002918-PA 1:1 689782
AGAP004752 CPIJ009694-PA 1:1 1177233
AGAP004753 CPIJ001266-PA 1:m 788759
AGAP004753 CPIJ011603-PA 1:m NA
AGAP004754 CPIJ002923-PA 1:1 1170952
AGAP004755 CPIJ002926-PA 1:1 NA
AGAP004756 CPIJ002925-PA 1:m 1082201
AGAP004756 CPIJ011812-PA 1:m NA
The expected output should be Table T1 below
AGAP004746 CPIJ018891-PA 1:1 1082603
AGAP004753 CPIJ001266-PA 1:m 788759
AGAP004753 CPIJ011603-PA 1:m NA
AGAP004756 CPIJ002925-PA 1:m 1082201
AGAP004756 CPIJ011812-PA 1:m NA
0 个评论
采纳的回答
Voss
2023-8-14
X = ["AGAP004746", "AGAP004753", "AGAP004756"];
idx = ismember(T{:,1},X);
T1 = T(idx,:);
0 个评论
更多回答(1 个)
Daniel Bengtson
2023-8-14
编辑:Daniel Bengtson
2023-8-15
T = %your table
X = {"AGAP004746", "AGAP004753", "AGAP004756"};
T1 = T(cell2mat(cellfun(@(x) any(strcmp(x,X)),T{:,1},'UniformOutput',false)),:);
2 个评论
Daniel Bengtson
2023-8-15
Good catch on the t -> T mistake, but x is just a function handle and would have been fine. I stole that line from something else that I was working on and was sloppy with variables. Edited for correction.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!