我一直在努力寻找一种方法,使用MATLAB将字符串转换为.txt文件中的整数。
以下是我的文件的示例:
genes total_muts
A2M 1
AARS 4
AASS 6
ABCA1 105
ABCA3 71
ABCA4 563
以下是我正在使用的脚本:
genes_disease = dataset('file', 'genes_totalshuffle.txt', 'Delimiter', '\t');
gene = genes_disease.genes
total_muts = genes_disease.total_muts
a = 0
fileID = fopen('genes_totalshuffled.txt', 'w')
for k = 1:length(genes_disease)
total_muts1 = total_muts(k);
num_total_muts = str2num(total_muts1)
r = randi([a num_total_muts],1);
fprint(fileID, '%4f %4f\n', num_total_muts, r)
end
fclose(fileID)
当我运行此脚本时,出现错误,通知我randn
的大小输入需要为数字。我认为我的问题在于totalmuts
变量。此变量打印字符串而不是整数。我以为我可以使用str2num()
,但我似乎无法让它正常工作。有什么建议吗?
*已编辑:包括我尝试使用str2num
的方式。另外,我试图生成一个介于0和我文件中列出的值之间的随机生成的数字。
答案 0 :(得分:3)
您可以使用randi
生成0
和totalmuts
之间的数字
r = randi([0 totalmuts]);
我必须将输入数据更改为CSV
genes,total_muts
A2M,1
AARS,4
AASS,6
ABCA1,105
ABCA3,71
ABCA4,563
然后代码
genes_disease = dataset('file', 'genes_totalshuffle.txt', 'Delimiter', ',');
gene = genes_disease.genes
total_muts = genes_disease.total_muts
a = 0
fileID = fopen('genes_totalshuffled.txt', 'w')
for k = 1:length(genes_disease)
totalmuts = total_muts(k);
genename = gene(k);
r = randi([a totalmuts]);
fprintf(fileID, '%4f %4f\n', totalmuts, r) % consider %d or %3d
end
fclose(fileID)
它对我来说很好,输出
1.000000 1.000000
4.000000 0.000000
6.000000 3.000000
105.000000 47.000000
71.000000 46.000000
563.000000 400.000000