Matlab有相当于R的dput()吗?
dput()将R对象的ASCII文本表示形式写入文件或连接。
最佳答案
更新1 :添加了对单元的递归和支持!
更新2 :添加了对结构的支持!
更新3 :添加了对逻辑,整数和复数 double 的支持。添加了单元测试。发布到FileExchange的位置:http://www.mathworks.com/matlabcentral/fileexchange/34076
注意:检查https://github.com/johncolby/dput上的github,以获取所有进一步的更新。
没有内置的等效项,但是创建一个等效项的模板非常简单,所以我认为我应该开始制作它。只需循环遍历变量并根据数据类型编写等效的字符串。
我为此启动了一个git存储库,因此可以随意进行 fork 并为我提供其他数据类型的帮助。基本类型完成后(至少是double,char,struct,cell),我将其发布在FileExchange上。
https://github.com/johncolby/dput
从一些示例变量开始
x = 1:10;
y = 3;
z = magic(3);
mystr = ['line1'; 'line2'];
mystruct = mystruct = struct('index', num2cell(1:3), 'color', {'red', 'blue', 'green'}, 'misc', {'string' 4 num2cell(magic(3))})
mycell = {1:3, 'test'; [], 1};
基本用法是:
>> dput(x, y, z, mystr, mystruct, mycell)
ans =
x = reshape([1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 10.000000 ],[1 10]) ;
y = reshape([3.000000 ],[1 1]) ;
z = reshape([8.000000 3.000000 4.000000 1.000000 5.000000 9.000000 6.000000 7.000000 2.000000 ],[3 3]) ;
mystr = reshape('lliinnee12',[2 5]) ;
mystruct = struct('index',reshape({reshape([1.000000 ],[1 1]) reshape([2.000000 ],[1 1]) reshape([3.000000 ],[1 1]) },[1 3]),'color',reshape({reshape('red',[1 3]) reshape('blue',[1 4]) reshape('green',[1 5]) },[1 3]),'misc',reshape({reshape('string',[1 6]) reshape([4.000000 ],[1 1]) reshape({reshape([8.000000 ],[1 1]) reshape([3.000000 ],[1 1]) reshape([4.000000 ],[1 1]) reshape([1.000000 ],[1 1]) reshape([5.000000 ],[1 1]) reshape([9.000000 ],[1 1]) reshape([6.000000 ],[1 1]) reshape([7.000000 ],[1 1]) reshape([2.000000 ],[1 1]) },[3 3]) },[1 3]));
mycell = reshape({reshape([1.000000 2.000000 3.000000 ],[1 3]) reshape([ ],[0 0]) reshape('test',[1 4]) reshape([1.000000 ],[1 1]) },[2 2]) ;
然后,您可以仅在线粘贴文本以创建可重现的示例,其他人可以将其复制/粘贴回MATLAB中以重新生成变量。就像R!
关于r - Matlab有相当于R的dput()吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8377575/