Look up a value in an incomplete list
Afficher commentaires plus anciens
I have keys and values like this:
keys = ["a", "b", "c", "d"];
vals = [3,4,2,1];
and I need to look up the values for x, but not all keys exist, e.g.:
x = ["c", "d", "e"];
which should result in:
y = [2, 1, NaN];
The problem I have is that strfind(), matches() yield empty arrays for "e", which leads to errors when looking up in vals.
Also, all arrays are >100k so I would like to avoid a for-loop.
Réponse acceptée
Plus de réponses (2)
How about:
keys = ["a", "b", "c", "d"];
vals = [1,2,3,4];
x = ["c", "d", "e"];
[~,y] = ismember(x,keys);
y(y==0) = NaN
2 commentaires
Oof. I forgot about that.
keys = ["a", "b", "c", "d"];
vals = [11,22,33,44];
x = ["c", "d", "e"];
[m idx] = ismember(x,keys);
y = NaN(size(m));
y(m) = vals(idx(m))
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!