【发布时间】:2021-03-22 16:12:14
【问题描述】:
我有一个不同值的列表,我需要在 Fortran90 代码中以特定方式对其进行格式化。
F90 文件按以下格式读入输入文件:
'5E16.8'
意思是 5 列,用科学记数法表示,总列宽为 16 位,小数点后 8 位。
此类输入文件的典型行如下所示:
-8.68914773E-03 -5.94151619E-03 2.34059840E-04 -2.76737270E-03 -4.90334584E-03
请注意,负号占总宽度的额外空间,值的长度固定在小数位数上。
我将如何从 R 中这样的列表/矩阵中格式化我的字符串和值?
一个示例矩阵:
m <- matrix(c(1, 2, 3, -1, -2, -3, 0.5, 3.9, -40, 120))
上面提到的格式看起来像:
1.00000000E+00 2.00000000E+00 3.00000000E+00 -1.00000000E+00 -2.00000000E+00
-3.00000000E+00 0.50000000E+00 3.90000000E+00 -4.00000000E+01 1.20000000E+02
【问题讨论】:
-
不知道,但你有没有仔细阅读
?sprintf...? -
到目前为止,我已经看过 cat/sprintf/write,但没有运气。问题通常在于将负号添加为额外的字符导致间距混乱
-
sprintf("%16.8e",m)加上一些gsub()工作将e+转换为E? -
(1) 你的第三列有
E0而不是E00,这是故意的吗? (2) 大小 -
我的例子看起来像你的 except 0.5 (呈现为
5.00000...e-01...)