【问题标题】:R: delete blank spaces for matrix stored to a textfileR:删除存储到文本文件的矩阵的空格
【发布时间】:2015-08-28 07:57:17
【问题描述】:

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

假设我们有 4 个不同的参数,从一个列表中提取。我们将具有以下属性的子集称为“参数”:

  1. 苹果数量
  2. 苹果的平均体积 [cm³]
  3. 我邻居吃的苹果
  4. 变成果汁的苹果百分比

一个设置可能是:

> 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) 应该可以解决您的问题

标签: r text matrix


【解决方案1】:

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

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

我希望它对你有用。

【讨论】:

  • 非常感谢您提供这个简单但很棒的答案!它完全有效:)
猜你喜欢
  • 1970-01-01
  • 2018-05-16
  • 2021-04-10
  • 1970-01-01
  • 2012-11-18
  • 2017-02-18
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
相关资源
最近更新 更多