Creating heading for table that changes depending on datainput
Ältere Kommentare anzeigen
grades_incl_final=[cellstr(data.StudentID) cellstr(data.Name) num2cell(grades) num2cell([computeFinalGrades(grades)]')];
array=[grades_incl_final];
table=array2table(array);
table.Properties.VariableNames = {'StudentID' 'StudentName' 'Assignment1' 'Assignment2' 'Assignment3' 'FinalGrade'}
disp(table)
Hi This code creates the table that you can see in the attached picture. My problem is that I want to be able to put more than three assignments into the table. In other words the headings should change depending on the amount of assignments in the 'data' file. If it is easier it is okay if the heading for the assignments are just 1,2,3,4... Can someone tell me how I can do this?
2 Kommentare
Guillaume
am 15 Jan. 2018
- Don't call your table table since that will prevent you from constructing tables the proper way with the table function.
- There is no point constructing a cell array to then convert into a table. You can create the table directly.
- What is the class of data? and what is the class of data.StudentID and data.Name ?
Håkon Haavik Nystad
am 15 Jan. 2018
Akzeptierte Antwort
Weitere Antworten (1)
headings=arrayfun(@(i) ['Assignment' num2str(i)],1:numberOfAssignments,'uni',0);
headings=[{'StudentID' 'StudentName'}, headings, {'FinalGrade'}];
grades_incl_final=[cellstr(data.StudentID) cellstr(data.Name) num2cell(grades) num2cell([computeFinalGrades(grades)]')];
array=[grades_incl_final];
T=array2table(array);
T.Properties.VariableNames = headings;
disp(T)
1 Kommentar
Guillaume
am 15 Jan. 2018
Since R2016b, matlab has had the compose function that would do that arrayfun bit a lot simpler:
compose('Assignment%d', 1:numberOfAssignments)
If I read the code correctly, then numberOfAssignments is size(grades, 2)
Kategorien
Mehr zu Tables finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!