2015-08-28 43 views
0

我剛剛遇到了R腳本的問題。該腳本旨在更改某些值並將其存儲在文本文件中(然後將其傳遞到預先存在的Fortran代碼以供進一步分析)。R:刪除存儲到文本文件中矩陣的空格

想象一下,我們有4個不同的參數,從列表中提取。我們所說的子集「參數」具有以下屬性:

  1. 數蘋果的
  2. 平均體積[立方厘米]蘋果
  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試圖始終在每一行的完全相同的位置有小數點,但我需要所有的值都保持爲alligned。我想在將它們寫入文本文件之前將數字轉換爲字符串,但Fortran並不喜歡這樣(它將「3」變成「0.0000003」),但不幸的是我無法訪問該Fortran碼。將矩陣轉換爲data.frame也不會改變任何內容。

希望你有我的問題。謝謝你的幫助!

+1

根據'format'使用'format(參數,digits = 7,trim = TRUE)'應該可以解決您的問題 – Tensibai

回答

0

在您使用的格式函數中,有一個名爲「trim」的參數來修剪這些空白。我相信這可能對你有用。在你目前的情況下確切的代碼是:

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

我希望它適合你。

+0

非常感謝您這麼簡單但很好的答案!它完全有效:) – offeltoffel