MATLAB Answers

Error using readtable, Input must be a row vector of characters or string scalar: WHERE IS YOUR PROBLEM??

67 views (last 30 days)
Hi guys.
My problem is rather common but I cannot solve it. I have several .csv files that I want to combine into one (same sheet). I am trying
vars={'Temperature'; 'Relative humidity'};
path = append(output_path,'\',stations{i},'\');
files = append(path, 'Stats ', months ,' ', stations{i} ,' ',vars{1},' .csv');
result = table();
for fidx = 1:numel(files)
filecontent = readtable(files);
[~, filenumber] = fileparts(files(fidx).name);
filecontent.file_label = repmat(str2double(filenumber), height(filecontent), 1);
result = [result; filecontent];
end
Just to help you understand, stations{i} come from the attached .xlsx and the attached .csv is one of the many files I want to combine. When I run these lines I get the message "Error using readtable, Input must be a row vector of characters or string scalar". I tried files = char(files) but it didn't work.
Any ideas please???
PS. I am on 2019a.

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 12 Mar 2020
Edited: Fangjun Jiang on 12 Mar 2020
readtable() can read one file at a time. Your "files" variable seems to contain multiple files. So you can't use readtable(files). Most likely, you need to use readtable(files{fidx})
Whenever there is an error, try to debug it yourself. Put a break point in the code, run the code line by line, check out the value of each variable, and look at the error message.
  7 Comments
Daphne PARLIARI
Daphne PARLIARI on 13 Mar 2020
You were right. I fixed my code as follows, in case someone has the same problem with me:
path = append(output_path,'\',stations{i},'\');
files = append(path, 'Stats ', months ,' ', stations{i} ,' ',vars{1},' .csv');
result = table();
for fidx = 1:numel(files)
filecontent = readtable(files{fidx});
[~, filenumber] = fileparts(files{fidx});
filecontent.file_label = repmat(str2double(filenumber), height(filecontent), 1);
result = [result; filecontent];
end
outfile = [output_path,'\',stations{i},'\','Monthly T stats ',stations{i},' 2015.xlsx'];
writetable(result,outfile);
Thanks everyone for your contribution!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by