【问题标题】:Erase rows from a cell array depending on empty cells in each row根据每行中的空单元格从单元格数组中删除行
【发布时间】:2014-05-28 16:54:09
【问题描述】:

我有一个 8 列的元胞数组。有时,在最后 5 列中,我得到:[ ](空单元格)。如果发生这种情况,我想完全删除该行。例如:

19970101 18659 183 '19980820' '00018659' 'RUNYON L' '00001534' 'MERRILL'
19970101 18290 183 '19981221' '00018290' 'MANTON S' '00001534' 'MERRILL'
19970101 835   183    [ ]        [ ]        [ ]        [ ]        [ ]
19970101 10280 183 '19980819' '00010280' 'BRENNAN S' '00001534' 'MERRILL'

我想得到什么:

19970101 18659 183 '19980820' '00018659' 'RUNYON L' '00001534' 'MERRILL'
19970101 18290 183 '19981221' '00018290' 'MANTON S' '00001534' 'MERRILL'
19970101 10280 183 '19980819' '00010280' 'BRENNAN S' '00001534' 'MERRILL'

非常感谢您的帮助。

【问题讨论】:

    标签: string matlab delete-row cell-array


    【解决方案1】:

    假设input_cellarray 是输入元胞数组,试试这个 -

    input_cellarray(all(cellfun(@numel,input_cellarray),2),:)
    

    如果您希望我们必须删除最后 5 列正好有空单元格 [] 的行,那么您需要稍微调整一下代码 -

    input_cellarray(any(cellfun(@numel,input_cellarray(:,end-4:end)),2),:)
    

    【讨论】:

    • 成功了!非常感谢,我遇到了很多困难,因为我没有处理数字。非常感谢!
    • @user3557054 太棒了!很高兴知道它对您有用,而且您是对的,元胞数组有时可能很复杂。
    • 您是否知道如何删除/擦除重复的行,我的意思是完全相等的行,我想删除并只保留第一个。谢谢!
    • @user3557054 我认为最好将其作为一个单独的问题发布,因为它看起来完全不同。
    • 我会这样做的,明天第一件事!谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2017-11-20
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多