У меня возникают проблемы при округлении чисел с большим количеством нулей перед последней цифрой в R с помощью функции round()
. Кажется, что они правильно округлены в выводе R, но когда я экспортирую округленные числа в файл .csv с помощью readr::write_excel_csv(), они отображаются так, как если бы они не были округлены. Пример:
a <- c(-0.28866000000000003, 0.28372000000000003)
round(a, digits = 5)
[1] -0.28866 0.28372
Результаты в файле .csv такие же, как «a».
Кто-нибудь знает, почему?
Если вы хотите установить количество десятичных знаков для нескольких векторов, которые вы хотите преобразовать в столбцы в вашем CSV-файле, вы можете использовать следующий подход:
#----------
# Load packages
#----------
library(readr)
library(dplyr)
#----------
# Generate exemplary vectors
#----------
a <- c(-0.28866000000000003, 0.28372000000000003)
b <- c(-0.46866000000000003, 0.46372000000000003)
#----------
# Make data.frame from vectors & set decimal options for columns
#----------
df <- data.frame (a, b) %>%
mutate (across(1:2, .fns = function(x) {format(round(x, 5), nsmall = 5)}))
#----------
# Save as csv-file
#----------
write_excel_csv(df, "your_path/df.csv", delim = ";")
@menarest - ты где-нибудь сохранял значения
round(a, digits = 5)
? Я предполагал, что вы делаете что-то вроде:b <- round(a, digits = 5)
тогдаwrite.csv(b)
. Простой запускround(a, digits = 5)
нигде не сохраняет эти значения, поэтомуa
то же самое (если только вы не запуститеa <- round(a, digits = 5)