How do I delete rows in a table if they contain a specific string?

5 vues (au cours des 30 derniers jours)
Abigail
Abigail le 11 Avr 2014
Modifié(e) : Ken Atwell le 20 Avr 2014
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 commentaires
Abigail
Abigail le 11 Avr 2014
Modifié(e) : Abigail le 11 Avr 2014
Thanks!

Connectez-vous pour commenter.

Réponses (2)

Ken Atwell
Ken Atwell le 12 Avr 2014
Modifié(e) : Ken Atwell le 20 Avr 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 commentaire
Image Analyst
Image Analyst le 12 Avr 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.

Connectez-vous pour commenter.


Azzi Abdelmalek
Azzi Abdelmalek le 11 Avr 2014
Modifié(e) : Azzi Abdelmalek le 11 Avr 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 commentaires
Abigail
Abigail le 11 Avr 2014
Thanks for the response. Sorry if I'm being dense, but when I run this, it deletes the 'scr' strings from the cell array str and not the table. Any way to delete from the table as well?
Azzi Abdelmalek
Azzi Abdelmalek le 11 Avr 2014
No, this deletes all the rows containing scr

Connectez-vous pour commenter.

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by