MATLAB Answers

Removing <missing> from cell arrays

42 views (last 30 days)
Arthur Romeu
Arthur Romeu on 24 Jan 2020
Commented: Arthur Romeu on 24 Jan 2020
Hello everyone!
I hope you are doing well.
I am currently trying to remove missing entries from the cell array 'InfoStatus_dias', which you can find attached here. My original attempt to do so is as follows:
for k = 1:size(Datas_tratado,1)
for j = 1:14
rmmissing(InfoStatus_dias{k,1}{j,1});
end
end
Only to return error "Conversion of element 1 from <missing> to character vector is not supported."
Then I tried doing like so:
for k = 1:size(Datas_tratado,1)
rmmissing(InfoStatus_dias{k,1}{:,1});
end
But it returned the same error :(
I am struggling to find where my thinking is wrong while using this loop, and... well, could you shine a light on this matter?
Thanks in advance!
Arthur.

  0 Comments

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 24 Jan 2020
Edited: Guillaume on 24 Jan 2020
Note that, as with most matlab functions, calling rmmissing without assigning its output to anything is a big waste of time. You're just throwing away whatever the function does.
The easiest way to do what I assume you want:
newInfoStatus = cellfun(@rmmissing, InfoStatus_dias, 'UniformOutput', false);
The loop equivalent of the above line, if you don't like cellfun:
newInfoStatus = cell(size(InfoStatus_dias));
for k = 1:numel(InfoStatus_dias)
newInfoStatus{k} = rmmissing(InfoStatus_dias{k}); %I recommend that you use 1D indexing in vector, {k} instead of {1,k} or {k, 1}
end

  1 Comment

Arthur Romeu
Arthur Romeu on 24 Jan 2020
Thanks a bunch!!
That's exactly what I wanted to do. I'm going to read more about cellfun :)
Best regards,
Arthur.

Sign in to comment.

More Answers (0)

Sign in to answer this question.