How do I delete rows in a table if they contain a specific string?
24 views (last 30 days)
Show older comments
I have a table (RawGaze) containing variable MediaName, and I want to delete rows that contain a string "scr". Here is an example of the contents of RawGaze.MediaName:
'03_f_calm_open_scr_f.jpg'
'03_f_calm_open_scr_f.jpg'
'03_f_fear_open.jpg'
'03_f_fear_open.jpg'
'03_f_fear_open.jpg'
'03_f_fear_open.jpg'
'03_f_fear_open.jpg'
'03_f_fear_open.jpg'
'03_f_fear_open.jpg'
'03_f_fear_open.jpg'
'21_m_happy_open.jpg'
'21_m_happy_open.jpg'
'21_m_happy_open.jpg'
'21_m_happy_open.jpg'
'21_m_happy_open.jpg'
'21_m_happy_open.jpg'
'21_m_happy_open.jpg'
'21_m_happy_open.jpg'
'21_m_happy_open.jpg'
'21_m_happy_open.jpg'
'05_f_calm_open_scr_c.jpg'
'05_f_calm_open.jpg'
How do I select only those rows that contain the "scr" string and delete them? Thanks! I'm VERY new to MATLAB, and really struggling with this!
2 Comments
Image Analyst
on 11 Apr 2014
I fixed your formatting, but as thanks I want you to read this: http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup
Answers (2)
Ken Atwell
on 12 Apr 2014
Edited: Ken Atwell
on 20 Apr 2014
Starting with Azzi's answer, here is a version that work with a table. I also swapped out regexp in favor of strfind, simply because strfind is sufficient in this case and is easier for newcomers to understand.
%%Create a table 'RawGaze' with a row called 'MediaName'
str={'03_f_calm_open_scr_f.jpg'
'03_f_calm_open_scr_f.jpg'
'03_f_fear_open.jpg'
'03_f_fear_open.jpg'
'05_f_calm_open.jpg'};
RawGaze = table(str, 'VariableNames', {'MediaName'});
%%Remove rows containing occurrences of 'scr' in 'MediaName'
RawGaze(cellfun(@isempty, strfind(RawGaze.MediaName, 'scr')), :);
1 Comment
Image Analyst
on 12 Apr 2014
Nice Ken. I love the new table data type you introduced in R2013b. It's very useful and intuitive. I plan on using it a lot.
Azzi Abdelmalek
on 11 Apr 2014
Edited: Azzi Abdelmalek
on 11 Apr 2014
If str is your cell array
str={'03_f_calm_open_scr_f.jpg'
'03_f_calm_open_scr_f.jpg'
'03_f_fear_open.jpg'
'03_f_fear_open.jpg'
'05_f_calm_open.jpg'}
str(~cellfun(@isempty,regexp(str,'scr','match')))=[]
2 Comments
See Also
Categories
Find more on Characters and Strings 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!