Problem with readtable MATLAB R2020a+

Hello,
I am trying to read a basilar table in MATLAB.
I wrote some scripts and I had no problem until version 2020a, where I see that there are huge changes in tables management functions.
Here are the call to readtable that I always use:
readtable(devices_file, 'Delimiter', ',', 'Format','%q%q')
Starting from R2020a, the readtable fails with this strange error:
Error using readtable (line 318)
Undefined function 'isnan' for input arguments of type 'string'.
Note: readtable detected the following parameters:
'HeaderLines', , 'ReadVariableNames', true
Also readtable with no arguments fails. I inspected into the core and the fail seems to go deep and it is correlated to DelimitedTextImportOptions or some other similar function.
Using detectImprtOptions the error is similar:
detectImportOptions(devices_file, 'Delimiter', ',', 'Format','%q%q')
also here its the same omitting the arguments.
Check for incorrect argument data type or missing argument in call to function 'isnan'.
Error in detectImportOptions (line 381)
throw(ME)
Do you know how to workaround this issue or if it is a bug that has to be resolved?
Sincerely,
Paolo Oliveri

6 Comments

hmm
this is what i get when i open your csv file
not really what I expected ...
Paolo Oliveri
Paolo Oliveri on 15 Jul 2021
Edited: Paolo Oliveri on 15 Jul 2021
Hello,
thank for your response.
If you read the CSV file using an importer that detects the import options, you have to select comma as delimiter and double quote as quote character.
Every element is in fact protected by the double quotes and the delimiter is the comma char.
Paolo Oliveri
I tested this on my R2020b without a problem
readtable('devices.csv', 'Delimiter', ',')
ans =
6×2 table
id name
__ ______________________________________
1 {'moored surface buoy' }
2 {'subsurface mooring' }
3 {'fixed benthic node' }
4 {'land/onshore structure' }
5 {'mooring' }
6 {'fixed subsurface vertical profiler'}
Hello,
thank for your answer. Nice to hear this.
I am using Linux O/S on different machines, what is your O/S?
Ok, so maybe the problem is related to Linux releases only. Can anyone that runs MATLAB on Linux or MATLAB staff try to reproduce the problem?

Sign in to comment.

 Accepted Answer

My best guess is that there's something installed on the path that conflicts with a function//variable that readtable is using internally. I am basing that on the fact that this doesn't seem to be happening with every user.
One way to test this, is to make sure you're using only the default path: https://www.mathworks.com/help/matlab/ref/path.html
A more precise way is to set:
>> dbstop if caught error
Then run the command, using dbcont until you hit the line that's issuing the error "Undefined function 'isnan' for input arguments of type 'string'."
Then, on that line, look at all the names of all the functions/variables and call
>> which -all <each-thing-on-that-line>
If you see something "shadowed" that's likely the problem.
You can also try technical support.

1 Comment

Hello,
thank you for your answer! In fact there was a previous release of
replace.m
function in my path (I did not know that there were) that interfered with the readtable routines. I removed it and all turned working.
Thank you!
Paolo Oliveri

Sign in to comment.

More Answers (1)

Hi Paolo,
I am hoping I have an answer for you however I am working in MATLAB 2020b, it is post 2020a so I think the changes should match up.
I believe the error message:
Undefined function 'isnan' for input arguments of type 'string'.
is generated as MATLAB is looking for the first input (i.e. the file name) in the readtable function to be a string, try changing to this;
readtable('devices_file.csv', 'Delimiter', ',', 'Format','%q%q') // note the added '' and .csv in the first input
this should hopefully prevent the isnan error, lastly double check the file name as the attached file was called "devices" and not "devices_file"
Let me know if this helps!
Christopher

1 Comment

Hello,
thank you for your answer.
I did not paste the code completely, only the readtable line. There are other lines of code where I define de variable "devices_file". So this is not the problem.
Please also remember that I am using also MATLAB R2019b and all of my script work without any problem.

Sign in to comment.

Categories

Products

Release

R2020a

Community Treasure Hunt

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

Start Hunting!