Iterating array of chars and saving to table or cell

21 views (last 30 days)
I want to make a loop that would allow me to iterate using this function
GeneontObj(temp(i,1)).terms.definition;
For example if I'll do
T = GeneontObj(temp(1,1)).terms.definition
I will receive
T = ""A multimeric enzyme complex, usually a dimer or an octamer,
that catalyzes the conversion of 2-phospho-D-glycerate to phosphoenolpyruvate and water."
[GOC:jl, ISBN:0198506732]"
My iterator has about 1500 records, and I would like to save an array like T above to a table, each row for each iteration.
With other data than char/strings I'd do something like:
result = zeros(length(temp), 1)
for i = 1:length(temp)
result(i) = GeneontObj(temp(i,1)).terms.definition;
end
but because it is char i have an error:
Unable to perform assignment because the left and right sides have a different number of elements.
It would be perfect, if there is a way to store this data in table, but cell array will also work.

Accepted Answer

J. Alex Lee
J. Alex Lee on 5 Jun 2021
Edited: J. Alex Lee on 5 Jun 2021
Try this, if your function actually returns strings as your output suggests (rather than a char array)
result = strings(length(temp), 1)
for i = 1:length(temp)
result(i) = GeneontObj(temp(i,1)).terms.definition;
end
But this is not a "table" in the sense of a matlab table data type...
  2 Comments
M
M on 5 Jun 2021
Thank you! After this, i changed result into cell array, and then cell array to a table and everything works perfectly :)
a = cellstr(result);
studyResult = cell2table(a);
J. Alex Lee
J. Alex Lee on 5 Jun 2021
Glad it helps. You shouldn't have to go through a cell array, you should be able to just do
studyResult = array2table(result)

Sign in to comment.

More Answers (0)

Categories

Find more on Tables in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!