Find numeric columns in a cell array

20 ビュー (過去 30 日間)
Sergio Rossi
Sergio Rossi 2014 年 7 月 3 日
コメント済み: Bilirubin 2018 年 9 月 19 日
Hi,
I would like to use gplotmatrix on a dataset data, which contains mixed data (numeric and strings). However, gplotmatrix works on numeric data, so I need to convert my dataset to a matrix. As far as I understand, the only way is to do this is by
C=dataset2cell(data)
X=cell2mat(C)
However, the second command doesn't work, because C contains non-numeric columns. Is there a way to find which columns of a cell array contains only numbers? Thanks a lot,
Sergio

採用された回答

Jos (10584)
Jos (10584) 2014 年 7 月 3 日
% C is a cell array, like
C = {1 2 3 4 5 ; 11 '12' 13:15 14 []}
q = cellfun(@(x) isnumeric(x) && numel(x)==1, C) % true for elements of C that are numerical scalars
IsAllNum = all(q,1) % true for columns of C that have only numerical scalars
X = cell2mat(C(:,IsAllNum)) % select and convert
  1 件のコメント
Bilirubin
Bilirubin 2018 年 9 月 19 日
Does anyone know why isnan gives an error msg?
C = {1 2 3 4 5 ; 11 '12' 13:15 14 []}
q = cellfun(@(x) isnan(x) && numel(x)==1, C) % true for elements of C that are numerical scalars

サインインしてコメントする。

その他の回答 (1 件)

Pascal
Pascal 2014 年 7 月 3 日
If you know whole columns are either numeric or not,
cell2mat(C(:,find(cellfun(@isnumeric, C(1,:)))))

カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by