【发布时间】:2015-08-28 07:57:17
【问题描述】:
我的 R 脚本刚刚遇到问题。该脚本旨在更改某些值并将其存储在文本文件中(然后将其传递给预先存在的 Fortran 代码以进行进一步分析)。
假设我们有 4 个不同的参数,从一个列表中提取。我们将具有以下属性的子集称为“参数”:
- 苹果数量
- 苹果的平均体积 [cm³]
- 我邻居吃的苹果
- 变成果汁的苹果百分比
一个设置可能是:
> parameters
num apple volume neighbor juice
1 73 98.7 7 0.03
从列表中提取数据,然后,为了应用各种函数,将其转换为数字:
parameters <- as.numeric(parameters)
最后我需要将值写入一个文本文件,每行一个值,所以我把它们变成一个矩阵:
parameters <- as.matrix(parameters)
> parameters
[,1]
[1,] 73.0000000
[2,] 98.7000000
[3,] 7.0000000
[4,] 0.0030000
这是 R 将数据写入文本文件的确切方式,然后调用:
write.table(format(parameters,digits=7),"parameters.txt",col.names=F, row.names=F,quote=F)
到目前为止一切顺利。现在 Fortran 脚本进来了,[3,1] 有问题。请注意文本文件中也存在的值 (7.0) 之前的空格。如果我手动删除数字“7”之前的一个空格,Fortran 工作正常......如果我不这样做,它会崩溃。有没有办法让 R 不创建这个空间?似乎 R 试图始终将每行的小数点放在完全相同的位置,但我需要将所有值对齐。
我尝试在将数字写入文本文件之前将它们转换为字符串,但 Fortran 也不喜欢这样(它将“3”变成“0.0000003”),不幸的是我无法访问该 Fortran 代码.将矩阵转换为 data.frame 也没有任何改变。
希望你能解决我的问题。感谢您的帮助!
【问题讨论】:
-
根据
?format使用format(parameters,digits=7,trim=TRUE)应该可以解决您的问题