read.table
を使用して、0.00001などの数字を含むファイルを読み取りました
write.table
でそれらを書き戻すと、それらの番号は1e-5として表示されます
古い形式を保持するにはどうすればよいですか?
これを行うには、数値を必要に応じて書式設定された文字列に変換し、引数quote = FALSE
の呼び出しでwrite.table
。
dfr <- data.frame(x = 10^(0:15))
dfr$y <- format(dfr$x, scientific = FALSE)
write.table(dfr, file = "test.txt", quote = FALSE)
ファイル内の数値の形式を変更する必要はないことに注意してください。ほぼすべての科学ソフトウェアとすべてのスプレッドシートは、数値の科学表記法を理解し、選択した方法で表示できるように数値の書式設定オプションも備えています。
write.table
を呼び出す前に、scipen
オプションを変更するだけです。これにより、コンソールへの印刷時の数字の表示方法も変更されることに注意してください。
options(scipen=10)
write.table(foo, "foo.txt")
options(scipen=0) # restore the default
入力が科学表記法と明示的表記法の数字の混合である場合、数字を読み取り、どの数字がどのフォーマットであったかを追跡するための独自のパーサーを作成します。実際、これらの数値の文字列表現を保持して、書き戻すことができます正確に入力にあったもの。
ただし、一貫して明示的な表記を使用してwrite.table()のみを作成する場合は、試してください。
write.table(format(_your_table_here_、Scientific = FALSE)、...)
すべての行を最大限に制御し、次の形式でテキストファイルに出力する sprintf
# Find number of rows in data.frame test
nrows <- dim(test)[1]
# init a new vector
mylines <- vector("character",dim(test)[1])
# loop over all rows in dataframe
for(i in 1:nrows){
# Print out exactly the format you want
mylines[i] <- sprintf("Line %d: %.2f\t%.2f",1,test[i,"x"],test[i,"y")
}
# write lines to file
writeLines(mylines,"out.txt")