Effacer les filtres
Effacer les filtres

Find row with NaN in it.

109 vues (au cours des 30 derniers jours)
Artyom
Artyom le 17 Août 2014
Commenté : sworland le 9 Déc 2015
I have variable X.
X=[2 4 6;
4 5 NaN
3 NaN NaN
5 8 12
3 8 NaN];
How to find any row with NaN in it. ismember([3 8 NaN],X,'rows') gives me 0.
  1 commentaire
Artyom
Artyom le 17 Août 2014
I mean how to find specific row in the matrix (for example 'find' [3 8 NaN] must return me [0;0;0;0;1];).

Connectez-vous pour commenter.

Réponse acceptée

per isakson
per isakson le 17 Août 2014
Modifié(e) : per isakson le 17 Août 2014
A start:
is(:,1) = X(:,1)==3;
is(:,2) = X(:,2)==8;
is(:,3) = isnan( X(:,3));
all( is, 2 )
which returns
ans =
0
0
0
0
1
AFAIK: isnan is the only way to spot NaN.
I don't think there is a magic one-liner. A little function along the example above is one way. Loop over all columns, ....

Plus de réponses (3)

Guillaume
Guillaume le 17 Août 2014
[rows, columns] = find(isnan(X));
unique(row);
will give you the row indices
  1 commentaire
sworland
sworland le 9 Déc 2015
simple and fast, 1 upvote

Connectez-vous pour commenter.


Roger Stafford
Roger Stafford le 17 Août 2014
Modifié(e) : Roger Stafford le 17 Août 2014
The code
t = any(isnan(X),2);
will return you a column vector of logicals in which each element is true if the corresponding row of X contains a NaN. I trust that would meet your needs. In your example you would get t = [false;true;true;false;true].

Andrei Bobrov
Andrei Bobrov le 17 Août 2014
Modifié(e) : Andrei Bobrov le 17 Août 2014
X=[2 4 6;
4 5 NaN
3 NaN NaN
5 8 12
3 8 NaN];
с = [3 8 NaN];
z = [X;c];
z(isnan(z)) = max(z(:)) + 1;
out = ismember(z(1:end-1,:),z(end,:),'rows');
other example
X = randi(100,200,15);
X([5,125],[2,10]) = nan; % your array
c = X(5,:);
z = [X;c];
z(isnan(z)) = max(z(:)) + 1;
out = ismember(z(1:end-1,:),z(end,:),'rows');

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by