阅读 this question 后,我尝试对我的数据框做同样的事情:
x <- c(1,2,3,4)
y <- c(5,6,7,8)
my.df <- data.frame(x, y)
do.call("sprintf", c("%14.7E", my.df))
但这仅适用于第一列:
[1] " 1.0000000E+00" " 2.0000000E+00" " 3.0000000E+00" " 4.0000000E+00"
我想要的是这个:
1.0000000E+00 5.0000000E+00
2.0000000E+00 6.0000000E+00
3.0000000E+00 7.0000000E+00
4.0000000E+00 8.0000000E+00
所以我可以将它写入一个将由 Fortran 代码读取的文件。
最佳答案
我们需要遍历列并单独应用 sprintf
my.df[] <- lapply(my.df, sprintf, fmt = "%14.7E")
my.df
# x y
#1 1.0000000E+00 5.0000000E+00
#2 2.0000000E+00 6.0000000E+00
#3 3.0000000E+00 7.0000000E+00
#4 4.0000000E+00 8.0000000E+00
关于r - 使用 sprintf 格式化数据框数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42814436/