Problem with renaming dublicated variablenames
이전 댓글 표시
Hi experts,
I want to rename a bunch of variables (ppn) by extending them with '_01' and I want to extend duplicate variablenames with '_02'. The problem is that I get variables named 'BG1028_02_01'. I hope someone can help me!
ppn = {'BG1026';'BG1027';'BG1028';'BG1028';'BG1029';'BG1030'}
for i = 1:length(ppn)-1
j = i + 1;
d = strcmp(ppn{i},ppn{j});
if d == 0;
ppn{i} = strcat(ppn{i},['_01']);
else d = 1;
ppn{i} = strcat(ppn{i},['_01']);
ppn{j} = strcat(ppn{j},['_02']);
continue;
end
end
This is what I get:
ppn =
'BG1026_01'
'BG1027_01'
'BG1028_01'
'BG1028_02_01'
'BG1029_01'
'BG1030'
댓글 수: 1
Kirby Fears
2015년 9월 16일
편집: Kirby Fears
2015년 9월 16일
Do you want a general solution in case you have more than 2 duplicates? In the future, could you end up having 99 duplicates in a row?
채택된 답변
추가 답변 (1개)
dpb
2015년 9월 16일
ppn=strcat(ppn,'_01'); % add the '_01' at the git-go...
[~,~,ib]=unique(ppn); % get a list of unique name positions
[n,ix]=histc(ib,1:5); % count and locate if any duplicates
for i=1:length(n) % and process the list and fixup if needed...
if n(i)>1
for j=2:n(i)
k=ix(i)+j-1;
ppn(k)=strrep(ppn(k),'_01',num2str(j,'_%02d'));
end
end
end
BUT, DO NOT DO THIS!!! See the FAQ for why not and ways to avoid same...
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!