2017-10-04 156 views
0

的一部分这是我的样本数据(单元阵列)删除字符串单元阵列

>A_ 

'CUST_1627_PI425479659' 'Pri-miR-100u2'   'u2' 
'CUST_2430_PI425479649' 'Pri-miR-L7a-3d'  'd' 
'CUST_226_PI425479649' 'Pri-miR-3130-4u1'  'u1' 
'CUST_1618_PI425479649' 'Pri-miR-147bu'   'u' 
'CUST_1449_PI425479659' 'Pri-miR-107u'   'u' 
'CUST_1546_PI425479659' 'Pri-miR-4299d1'  'd1' 

最后一个字符或在第二列中的最后两个字符被写入到第三列中。我想从第二列的字符串中删除它们。

在结果就应该是这样的

>A_ 

'CUST_1627_PI425479659' 'Pri-miR-100'  'u2' 
'CUST_2430_PI425479649' 'Pri-miR-L7a-3'  'd' 
'CUST_226_PI425479649' 'Pri-miR-3130-4' 'u2' 
'CUST_1618_PI425479649' 'Pri-miR-147b'  'u' 
'CUST_1449_PI425479659' 'Pri-miR-107'  'u' 
'CUST_1546_PI425479659' 'Pri-miR-4299'  'd1' 

我这样试过,但它不工作。

s= {'u','u1','u2','d','d1'}; 

for i=1:length(A_(:,2)) 
    A_(i,2)= erase(A_(i,2),s) 
end 

回答

1

使用regexprep''替换在所述第二列中的第三列的发生。

A_(:,2) = regexprep(A_(:,2), A_(:,3), ''); 

或修复您的代码使用erase(在R2016b介绍):

for k=1:length(A_(:,2)) 
    A_(k,2) = erase(A_(k,2), A_(k,3)); %You need A_(k,3) here 
end 

但...因为erase是直接适用于电池阵列,所以你并不需要一个循环这里即

A_(:,2) = erase(A_(:,2), A_(:,3)); 
+0

谢谢:)它完美的作品 –