Error When Using Writetable Function

Hi All,
I have the following code:
f={tSampleName cMeasuredFo cMeasuredD56Fe cMeasuredD26Mg cFeUncertainty cMgUncertainty cFeInterp cMgInterp cMagmaMgNum cOlivineFo cTemperature cDtrsquared cDiffusionCoef cyears1mm cyears2mm cyears3mm cyears4mm cyears5mm};
ResultsTable=cell2table(f);
writetable(ResultsTable,'CodeResults.xlsx');
In which all the inputs to f are 9x1 cells. When I try and run this code, I receive the following error message:
Error using writetable
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-9.
Could someone please tell me what I'm doing wrong here? I would like to create a table in excel that shows all of my information stored in ResultsTable.
Thanks,
Jonathan

1 个评论

For reference, here's what getReport() returns for the error you got, assuming I did get the same the error:
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-9.
Error in tabular/writeXLSFile (line 132)
newVarj(:,cnt+(1:num)) = newVarjj;
Error in table/write (line 211)
writeXLSFile(t,fname,ext(2:end),otherArgs);
Error in writetable (line 155)
write(a,filename,varargin{:})
Error in [my file] (line 9)
writetable(ResultsTable,'CodeResults.xlsx');

请先登录,再进行评论。

 采纳的回答

Tommy
Tommy 2020-6-23
编辑:Tommy 2020-6-23
It seems like writetable() has trouble handling the case where a variable in your table contains a cell which itself contains an Nx1 cell array. Does it work if you concatenate your original cell arrays using square brackets?
f=[tSampleName cMeasuredFo cMeasuredD56Fe cMeasuredD26Mg cFeUncertainty cMgUncertainty cFeInterp cMgInterp cMagmaMgNum cOlivineFo cTemperature cDtrsquared cDiffusionCoef cyears1mm cyears2mm cyears3mm cyears4mm cyears5mm];
ResultsTable=cell2table(f);
writetable(ResultsTable,'CodeResults.xlsx');
(edit)
This results in the error:
T = table({num2cell(1:9)'});
writetable(T,'CodeResults.xlsx');
This doesn't:
T = table({num2cell(1:9)});
writetable(T,'CodeResults.xlsx');

4 个评论

Hi Tommy,
Thank you for your response. I modified my code to be as such:
f=[tSampleName cMeasuredFo cMeasuredD56Fe cMeasuredD26Mg cFeUncertainty cMgUncertainty cFeInterp cMgInterp cMagmaMgNum cOlivineFo cTemperature cDtrsquared cDiffusionCoef cyears1mm cyears2mm cyears3mm cyears4mm cyears5mm];
T = table({num2cell(1:9)});
writetable(T,'CodeResults.xlsx');
Yet upon doing so, I generate the attached excel file, which does not contain the information that I'm looking for. Did I not implement your advice correctly?
Apologies, I may have caused some unnecessary confusion. Try this:
f=[tSampleName cMeasuredFo cMeasuredD56Fe cMeasuredD26Mg cFeUncertainty cMgUncertainty cFeInterp cMgInterp cMagmaMgNum cOlivineFo cTemperature cDtrsquared cDiffusionCoef cyears1mm cyears2mm cyears3mm cyears4mm cyears5mm];
ResultsTable=cell2table(f);
writetable(ResultsTable,'CodeResults.xlsx');
Those two bits after the edit were to demonstrate that a cell in your table can contain a row cell array but not a column cell array.
This works perfectly, thanks again.
Awesome, happy to help!

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Cell Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by