Вообще говоря, управление количеством цифр, отображаемых при вызове write.table
, является простым. Учитывая отличный вопрос и ответ, увиденный here, мы видим, что format
- это средство для достижения этого подвига. Однако это создает файл, который при просмотре текстовым редактором показывает кавычки вокруг числовых значений. Это можно отключить, установив quote = FALSE
в write.table
. К сожалению, у этого есть побочный эффект, не помещая котировки вокруг столбцов character
. Обратите внимание:Управление количеством знаков после запятой в файле write.table при сохранении класса «числовой»
Нормальный случай (без формата и стандартного поведения выход)
df <- data.frame(c1 = 1:5/100, c2 = LETTERS[1:5])
write.table(df, file = "test.txt", sep = "|")
## when you open test.txt in a text editor, the middle column correctly
## appears as a numeric (i.e. no quotes), however there are only 2 decimals displayed.
## It should also be noted that the quotes are present in c2 (this is what we want).
"c1"|"c2"
"1"|0.01|"A"
"2"|0.02|"B"
"3"|0.03|"C"
"4"|0.04|"D"
"5"|0.05|"E"
с форматом
df$c1 <- format(df$c1, digits = 4, nsmall = 4)
write.table(df, file = "test.txt", sep = "|")
## when you open test.txt in a text editor, the middle column correctly
## displays four decimal places, however it now appears to be a character
## (i.e. with quotes). Again, it should be noted that the quotes are
## present in c2 (again, this is what we want).
"c1" |"c2"
"1"|"0.0100"|"A"
"2"|"0.0200"|"B"
"3"|"0.0300"|"C"
"4"|"0.0400"|"D"
"5"|"0.0500"|"E"
цитатами = FALSE
write.table(df, file = "test.txt", sep = "|", quote = FALSE)
## when you open test.txt in a text editor, the middle column correctly
## displays four decimal places with no quotes. However the quotes on column
## c2 (and everywhere else) have been dropped (this is NOT what we want).
c1 |c2
1|0.0100|A
2|0.0200|B
3|0.0300|C
4|0.0400|D
5|0.0500|E
Вопрос
Есть ли способ записать фрейм данных в файл, который управляет числом десятичных знаков при сохранении стандартных инструкций write.table
для отображения котировок (т. нет кавычек вокруг числовых полей и котировок вокруг полей символов)? Вот мой желаемый результат:
"c1" |"c2"
"1"|0.0100|"A"
"2"|0.0200|"B"
"3"|0.0300|"C"
"4"|0.0400|"D"
"5"|0.0500|"E"
Помогло ли вам использовать 'round()' перед написанием таблицы? –