Mam numer, na przykład 1.128347132904321674821, który chciałbym wyświetlać jako tylko dwa miejsca po przecinku podczas wyświetlania na ekranie (lub zapisywaniu do pliku). Jak to zrobić?
x <- 1.128347132904321674821
EDYTOWAĆ:
Sposób użycia:
options(digits=2)
Zostało zasugerowane jako możliwa odpowiedź. Czy istnieje sposób na określenie tego w skrypcie do jednorazowego użytku? Gdy dodam go do skryptu, wydaje się, że nie robi nic innego i nie jestem zainteresowany ponownym pisaniem w celu sformatowania każdej liczby (automatyzuję bardzo duży raport).
-
Odpowiedź: okrągły (x, cyfry = 2)
r
formatting
rounding
r-faq
Brandon Bertelsen
źródło
źródło
controls the number of digits to print when printing numeric values. It is a suggestion only. Valid values are 1...22 with default 7. See the note in print.default about values greater than 15.
z opcji? wpływa tylko na wynik.round(23, digits=2)
wydrukuje,23
a nie23.00
. Jeśli chcesz tego drugiego, spróbuj stackoverflow.com/a/12135122/180892Odpowiedzi:
Tło: Niektóre odpowiedzi je na tej stronie (np
signif
,options(digits=...)
) nie gwarantują, że pewna liczba miejsc po przecinku są wyświetlane dla dowolnej liczby. Zakładam, że jest to cecha projektowa w R, zgodnie z którą dobra praktyka naukowa polega na pokazywaniu pewnej liczby cyfr w oparciu o zasady „ znaczących cyfr ”. Jednak w wielu domenach (np. Styl APA , raporty biznesowe) wymagania dotyczące formatowania nakazują wyświetlanie pewnej liczby miejsc dziesiętnych. Odbywa się to często w celach spójności i standaryzacji, a nie w przypadku znaczących liczb.Rozwiązanie :
Poniższy kod pokazuje dokładnie dwa miejsca po przecinku dla liczby
x
.Na przykład:
Bardziej ogólna funkcja jest następująca, gdzie
x
jest liczba ik
liczba miejsc po przecinku do wyświetlenia.trimws
usuwa wszelkie białe znaki, które mogą być przydatne, jeśli masz wektor liczb.Na przykład,
źródło
0.0001
jako0.00
format()
iprettyNum()
przekształcają się w znaki. Jak byś to rozwiązał?format(c(10, 1), nsmall=1)
Plonów"10.0" " 1.0"
(zwróć uwagę na wiodącą spację przed 1.0. Podczas gdysprintf()
funkcja wydaje się gwarantować ładniejsze formatowanie na obie strony po przecinku, npsprintf(c(10,1), fmt = '%#.1f')
pozbywa się tego nieznośnego wiodącej przestrzeni i zwrotów"10.0" "1.0"
.format
jest użyty w kolumnie.Możesz sformatować liczbę, powiedzmy
x
, do miejsc po przecinku, jak chcesz. Otox
liczba z wieloma miejscami dziesiętnymi. Załóżmy, że chcemy pokazać do 8 miejsc po przecinku tej liczby:Tutaj
format="f"
daje liczb zmiennoprzecinkowych w zwykłych miejsc po przecinku powiedzieć, xxx.xxx idigits
określa liczbę cyfr. Natomiast jeśli chcesz uzyskać liczbę całkowitą do wyświetlenia, użyłbyśformat="d"
(podobnie jaksprintf
).źródło
formatC
prawie tego używam do tego celu. Myślę, że ta odpowiedź jest dobra i znajduje się w bazie R na żądanie PO.Możesz wypróbować mój pakiet formable .
Dobrą rzeczą jest to, że
x
nadal jest wektorem numerycznym i można wykonać więcej obliczeń przy tym samym formatowaniu.Co więcej, cyfry nie są zgubione, w dowolnym momencie możesz sformatować więcej cyfr :)
źródło
dla 2 miejsc po przecinku, zakładając, że chcesz zachować końcowe zera
co daje
Jak wspomniano poniżej @mpag, wydaje się, że R może czasem dać nieoczekiwane wartości za pomocą tej i okrągłej metody, np. Sprintf (5.5550, fmt = '% #. 2f') daje 5,55, a nie 5,56
źródło
Coś w tym stylu :
Definicja opcji cyfr:
źródło
digits
opcja nie wydaje się ustawiać liczby cyfr po przecinku. Na przykład, gdy ustawię opcje (cyfry = 2), wówczas wydruk 7,25 daje wynik w postaci 7.2, 1234.25 staje się 1234, a 0.25 pozostaje 0.25. Czy istnieje inna opcja interakcji z tym?Sprawdź funkcje prettyNum, format
mieć próbne zera (na przykład 123.1240)
sprintf(x, fmt='%#.4g')
źródło
sprintf
fmt
arg.g
Twoja odpowiedź dotyczy cyfr stałych, a korzystanie z nichf
działa lepiej.Jeśli wolisz cyfry znaczące niż stałe, wówczas przydatne może być polecenie signif :
źródło
Error: could not find function "fixed"
signif
działa dla podanej liczby, ale przypuszczam, że najczęściej stosowanym problemem jest to, że musisz pokazać dokładnie dwa miejsca po przecinku, ale nie wiesz, jaka liczba jest z góry. W takim przypadkusignif
poda różne liczby miejsc po przecinku w zależności od rzeczywistej liczby.Za pomocą tej funkcji
formatC()
można sformatować liczbę z dokładnością do dwóch miejsc po przecinku. Ta funkcja podaje dwa miejsca po przecinku, nawet jeśli wynikowe wartości zawierają końcowe zera.źródło
Używam tego wariantu do wymuszonego drukowania miejsc dziesiętnych K:
źródło
Zauważ, że obiekty numeryczne w R są przechowywane z podwójną precyzją , co daje (z grubsza) 16 cyfr dziesiętnych precyzji - reszta będzie szumem. Przyznaję, że powyższy numer jest prawdopodobnie tylko przykładem, ale ma 22 cyfry.
źródło
Wygląda mi na to, że byłoby coś takiego
Za małą pomoc online .
źródło
format.default(x, digits = 2)
po prostu strzału w ciemność, na podstawie podanego linku. Ta informacja jest tym, czego brakuje w tym, co normalnie czytam do dokumentacji, spodziewałem się również zobaczyć wydruków.jeśli chcesz tylko zaokrąglić liczbę lub listę, po prostu użyj
Następnie dane będą zaokrąglane do 2 miejsc po przecinku.
źródło