2016-03-03 55 views
2

我想將文本文件中的所有值轉換爲相應的log2值。我有一個巨大的文本文件,並會很有趣,以避免R. 不過,下面的R代碼在bash中以更有效的方式來舉例說明我想要實現的內容。將文本文件中的所有值轉換爲bash中的日誌比例

df <- 'sam1 sam2 sam3 
     2000 3000 4000 
     2000 1500 1200 
     2000 7000 6000' 
df <- read.table(text=df, header=T) 

dflog <- log(df) 

我的預期輸出:

dfout <- 'sam1 sam2 sam3 
     7.600902 8.006368 8.294050 
     7.600902 7.313220 7.090077 
     7.600902 8.853665 8.699515' 

dfout <- read.table(text=dfout, header=T) 

我會很感激的任何幫助,以在bash執行它。

回答

3

awk來救援!

$ awk 'NR>1{for(i=1;i<=NF;i++) $i=log($i)}1' sams 

sam1 sam2 sam3 
7.6009 8.00637 8.29405 
7.6009 7.31322 7.09008 
7.6009 8.85367 8.69951 

這是快速的解決方案,額外的小數點你可以用printf格式化輸出,但我不知道它的需要。

+2

沒錯。或在前面添加'-v OFMT =「%。6f」'。 –

相關問題