How to write a cell array of mixed strings and integers into a text file?

Hello guys,
I have a cell array of 700 rows and 2 columns,
The first column have a mixed of strings and integer values like this:
'GALK1' 1
'ERCC2' 1
'PGD' 1
'PLK' 1
0 0
0 0
0 0
0 0
0 0
i write this code but the cells of column 1 didn't show that 0 and only strings , which type i can use that can detect both strings and integers for the same column?
[rowfile1,colfile1]=size(Stages_pathws_genes_counts);
fidefile1= fopen('Rec_Stages','wt');
fprintf(fidefile1, '%s\t%s\n','Stg1_genes','#Stg1_count');
for gfile1=1:size(Stages_pathws_genes_counts)
fprintf(fidefile1,'%s\t %d\t',Stages_pathws_genes_counts{gfile1,:});
fprintf(fidefile1,'\t');
fprintf(fidefile1,'\n');
end
fclose(fidefile1);
Can anyone plz suggest me ?

 Accepted Answer

Where C is your cell array:
C = {'GALK1',1;'ERCC2',1;'PGD',1;'PLK',1;0,0;0,0;0,0;0,0;0,0};
D = cellfun(@num2str,C,'uni',0).';
[fid,msg] = fopen('temp0.txt','wt');
assert(fid>=3,msg)
fprintf(fid,'%s\t%s\n',D{:})
fclose(fid);
The file it creates is attached.

4 Comments

@ Stephen Cobeldick Hi Stephen i got this error when i'm applying yr code
Undefined function 'abs' for input arguments of type 'cell'.
Error in num2str (line 66)
xmax = double(max(abs(widthCopy(:))));
Error in IWBB_Reactome_pathway (line 194)
D = num2str(C).';
@chocho: check my edited answer. It uses your example cell array and writes a text file (attached to the answer). You did not describe the required file formatting and it is not completely clear from your code, so I guessed that you wanted the data in two columns.

Sign in to comment.

More Answers (1)

Let C be your cell array
fid = fopen('test.txt','w');
fprintf(fid,'%s\n',C{:});
fclose(fid);

4 Comments

@KSSV what's that, yr code did same as my code did !
load('ret.mat') ;
C = Ret ;
fid = fopen('data.txt','w');
for i = 1:length(C)
fprintf(fid,'%s %f\n',C{i,1},C{i,2});
end
fclose(fid);
If you don't want to write zero strings in column 1 of cells:
load('ret.mat') ;
C = Ret ;
fid = fopen('data.txt','w');
for i = 1:length(C)
fprintf(fid,'%s %f\n',C{i,1},C{i,2});
if C{i,1}==0
break
end
end
fclose(fid);
No, i want to write everything strings and zeros as well

Sign in to comment.

Categories

Asked:

on 17 Dec 2018

Commented:

on 17 Dec 2018

Community Treasure Hunt

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

Start Hunting!