R:删除存储在文本文件中的矩阵的空格

时间:2015-08-28 07:57:18

标签: r text matrix

我刚用R脚本遇到问题。该脚本旨在更改某些值并将其存储在文本文件中(然后将其传递给预先存在的Fortran代码以进行进一步分析)。

想象一下,我们从列表中提取了4个不同的参数。我们使用以下属性调用子集“parameters”:

  1. 苹果数量
  2. 苹果的平均体积[cm³]
  3. 我的邻居吃的苹果
  4. 变成果汁的苹果百分比
  5. 一个设置可能是:

    > 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也没有改变任何东西。

    希望你有我的问题。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

在您正在使用的格式函数中,有一个名为“trim”的参数用于修剪这些空白。我相信这可能对你有用。您当前情况下的确切代码是:

write.table(format(parameters,digits=7, trim = TRUE),"parameters.txt",col.names=F, row.names=F,quote=F)

我希望它适合你。