Concatenate cell with numeric array in tables
7 ビュー (過去 30 日間)
古いコメントを表示
I have a ridiculously simple problem that I cannot solve. I have two tables and I want to concatenate them, but one contains a column with a cell array and one with a numeric array.
a = table([1; 2; 3]);
b = table({[1 2]; [3 4]})
c = [a; b];
This immediately produces an error because I am trying to concatenate a cell with a non-cell type. But if I just try to concatenate these variables outside a table, it works fine, recognizing that the result should be a cell array. There seems to be no way of telling matlab that I want it to convert a's variable to a cell array.
The actual problem is somewhat more complex - it's easy enough to solve this in the current case by just removing the variables from the table and concatenating them, then making a new table. But in the actual use case the tables have up to 50 variables, and it's unknown at runtime which of them are causing the problem.
Suggestions?
0 件のコメント
採用された回答
Robert U
2019 年 10 月 30 日
Hi Marcus Watson,
an straight-forward solution would be checking the variable types stored in the table. In case they don't match change the numerical one to cell array.
a = table([1; 2; 3]);
b = table({[1 2]; [3 4]})
if ~cellfun(@isempty,{a{:,vartype('numeric')}}) && cellfun(@isempty,{b{:,vartype('numeric')}})
a = table({a{:,vartype('numeric')}});
elseif cellfun(@isempty,{a{:,vartype('numeric')}}) && ~cellfun(@isempty,{b{:,vartype('numeric')}})
b = table({b{:,vartype('numeric')}});
end
c = [a; b];
In case there are anyway no numerical values to concatenate you can change all tables that are containing numerical values to cells.
Kind regards,
Robert
5 件のコメント
Robert U
2019 年 10 月 30 日
a = table([1; 2; 3]);
b = table({[1 2]; [3 4]});
if cellfun(@isempty,{a{:,vartype('cell')}}) && ~cellfun(@isempty,{b{:,vartype('cell')}})
a = table(num2cell(a{:,vartype('numeric')}));
elseif ~cellfun(@isempty,{a{:,vartype('cell')}}) && cellfun(@isempty,{b{:,vartype('cell')}})
b = table(num2cell(b{:,vartype('numeric')}));
end
c = [a; b];
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Tables についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!