我刚用R脚本遇到问题。该脚本旨在更改某些值并将其存储在文本文件中(然后将其传递给预先存在的Fortran代码以进行进一步分析)。
想象一下,我们从列表中提取了4个不同的参数。我们使用以下属性调用子集“parameters”:
一个设置可能是:
> 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也没有改变任何东西。
希望你有我的问题。谢谢你的帮助!
答案 0 :(得分:0)
在您正在使用的格式函数中,有一个名为“trim”的参数用于修剪这些空白。我相信这可能对你有用。您当前情况下的确切代码是:
write.table(format(parameters,digits=7, trim = TRUE),"parameters.txt",col.names=F, row.names=F,quote=F)
我希望它适合你。