dataset array - how can new data be added from a cell array that has some missing elements
1 view (last 30 days)
Show older comments
I've got numeric data in a cell array that has some empty elements, and I'd like to add this to a dataset array. If I convert to a matrix first, the indexing will be incorrect. I've tried with no avail the customary ways of assignmet to structures:
1) [dataset.prop] = propCellArray{:}; % this only copies 1st cell contents only
[dataset.prop] = deal(propCellArray); % contents remain cell arrays, and any attempt to convert to mat causes indexing problems
Anyone know the correct syntax?
thanks,
Aaron
0 Comments
Accepted Answer
Fangjun Jiang
on 29 Aug 2011
dataset=struct('prop',propCellArray);
If dataset already exists, use
[dataset.prop]=deal(propCellArray{:})
Okay, don't use dataset as variable name, especially when you are using the dataset() array.
If constructing from new:
propCellArray={1 [] 3 [] 5};
d1=dataset({propCellArray','prop'})
If modifying existing dataset array:
d2=dataset({rand(5,1),'prop'});
idx=cellfun('isempty',propCellArray);
d2.prop(~idx)=[propCellArray{:}]'
Or do processing on propCellArray first and then assign
propCellArray(idx)={0};
d2.prop=[propCellArray{:}]'
4 Comments
Oleg Komarov
on 29 Aug 2011
@Walter:
dtset = dataset();
[dtset(1:numel(propCellArray)).prop] = deal(propCellArray{:});
??? Error using ==> dataset.subsasgn at 83
Dataset array subscripts must be two-dimensional.
Then:
[dtset(1:numel(propCellArray),'prop')] = deal(propCellArray{:});
??? Error using ==> deal at 38
The number of outputs should match the number of inputs.
More Answers (1)
Oleg Komarov
on 29 Aug 2011
% Create sample cell array
propCellArray = num2cell(rand(20,1));
propCellArray(randi(20,3,1)) = {[]};
% Create sample dataset
dtset = dataset({[],'Prop'});
% Index non-empty and replace with NaN
propCellArray(cellfun('isempty',propCellArray)) = {NaN};
dtset.Prop = cat(1,propCellArray{:});
Other ways will give you dtset.Prop as one element containing the whole propCellArray converted to double and by default padded with zeros where it was empty.
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!