我想在matlab中找到并替换所有内容(正如我们在MS办公室那样)。
https://www.dropbox.com/s/hxfqunjwhnvkl1f/matlab.mat?dl=0
我有一个单元格数组LUT_HS_complete
(第1列包含标识符,第2列包含蛋白质名称,第3列包含蛋白质名称)这是我的查找表。另一方面,我有蛋白质 - 蛋白质相互作用数据(名为Second_layer
,前两列有标识符,第3列有分数)。
我想用我的查找表中的相应蛋白质名称替换Second_layer
中的前两列。
我尝试了strmatch
,但这对我没有帮助。
Source_gene = Second_layer(:,1); Source_gene = regexprep(Source_gene,'[-/\s]','');
Target_gene = Second_layer(:,2); Target_gene = regexprep(Target_gene,'[-/\s]','');
Inter_score = Second_layer(:,3);
%%
for i=1:length(Source_gene(1:end,1));
SG = strmatch(Source_gene(i),LUT_HS_complete(1:end,1),'exact');
renamed_Source_gene(SG,1) = LUT_HS_complete(SG,2);
end
for j=1:length(Target_gene(1:end,1));
TG = strmatch(Target_gene(j),LUT_HS_complete(1:end,1),'exact');
renamed_Target_gene(TG,1) = LUT_HS_complete(TG,2);
end
如果你能找到解决方案。这将是一个很大的帮助。
答案 0 :(得分:2)
这可能适合你吗?
renamed_Second_layer(:,1)=LUT_HS_complete(cellfun(@(x) find(strcmp(x,LUT_HS_complete(:,1))),Second_layer(:,1)),2);
renamed_Second_layer(:,2)=LUT_HS_complete(cellfun(@(x) find(strcmp(x,LUT_HS_complete(:,1))),Second_layer(:,2)),2);
renamed_Second_layer(:,3)=Second_layer(:,3);