Как контролировать количество десятичных цифр в выводе write.table()?
При работе с данными (например, в data.frame) пользователь может управлять отображением цифр с помощью
options(digits=3)
и перечисление data.frame, как это.
ttf.all
Когда пользователь должен вставить данные в Excell, как это
write.table(ttf.all, 'clipboard', sep='\t',row.names=F)
Параметр цифр игнорируется, а цифры не округляются.
Смотрите хороший вывод
> ttf.all
year V1.x.x V1.y.x ratio1 V1.x.y V1.y.y ratioR V1.x.x V1.y.x ratioAL V1.x.y V1.y.y ratioRL
1 2006 227 645 35.2 67 645 10.4 150 645 23.3 53 645 8.22
2 2007 639 1645 38.8 292 1645 17.8 384 1645 23.3 137 1645 8.33
3 2008 1531 3150 48.6 982 3150 31.2 755 3150 24.0 235 3150 7.46
4 2009 1625 3467 46.9 1026 3467 29.6 779 3467 22.5 222 3467 6.40
Но то, что в excel (буфер обмена) не округлено. Как контролировать в в write.table()
?
1 ответ
Вы можете использовать функцию format()
как в:
write.table(format(ttf.all, digits=2), 'clipboard', sep='\t',row.names=F)
format()
является универсальной функцией, которая имеет методы для многих классов, включая data.frames. В отличие от round()
, он не выдаст ошибку, если ваш фрейм данных не весь числовой. Подробнее о параметрах форматирования см. В файле справки через ?format
Добавление решения для смешанного фрейма данных character
а также numeric
колонны. Мы сначала используем mutate_if
выбирать numeric
столбцы затем применить round()
функционировать им.
# install.packages('dplyr', dependencies = TRUE)
library(dplyr)
df <- read.table(text = "id year V1.x.x V1.y.x ratio1
a 2006 227.11111 645.11111 35.22222
b 2007 639.11111 1645.11111 38.22222
c 2008 1531.11111 3150.11111 48.22222
d 2009 1625.11111 3467.11111 46.22222",
header = TRUE, stringsAsFactors = FALSE)
str(df)
#> 'data.frame': 4 obs. of 5 variables:
#> $ id : chr "a" "b" "c" "d"
#> $ year : int 2006 2007 2008 2009
#> $ V1.x.x: num 227 639 1531 1625
#> $ V1.y.x: num 645 1645 3150 3467
#> $ ratio1: num 35.2 38.2 48.2 46.2
df <- df %>%
mutate_if(is.numeric, round, digits = 2)
df
#> id year V1.x.x V1.y.x ratio1
#> 1 a 2006 227.11 645.11 35.22
#> 2 b 2007 639.11 1645.11 38.22
#> 3 c 2008 1531.11 3150.11 48.22
#> 4 d 2009 1625.11 3467.11 46.22
Создано 2019-03-17 пакетом представлением (v0.2.1.9000)