How does one use a string vector to select rows from a table. The vector length and the table height are unequal
2 ビュー (過去 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 で Tables についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!