Ich suchte nach der recht grundlegenden numerischen Funktion Ziffernsumme in R.
Deshalb habe ich versucht, mit folgender Funktion zu enden:
%Vor%Ich arbeite, aber ich kämpfe immer noch mit zwei Fragen:
Ich habe mich gefragt, welche der drei vorgeschlagenen Methoden (plus eine vierte) am schnellsten ist, also habe ich ein Benchmarking durchgeführt.
digitsum1 <- function(x) sum(as.numeric(unlist(strsplit(as.character(x), split = ""))))
digitsum2 <- function(x) sum(floor(x / 10^(0:(nchar(x) - 1))) %% 10)
Verwendung der Funktion digitsBase aus dem Paket GLDEX:
%Vor%Basierend auf einer Funktion von Greg Snow in der R-Hilfe-Mailingliste :
digitsum4 <- function(x) sum(x %/% 10^seq(0, length.out = nchar(x)) %% 10)
Benchmark-Code:
%Vor%Benchmark-Ergebnisse:
%Vor%Variante 2 ist etwas schneller als Variante 1, während Varianten 4 und 3 viel langsamer sind. Obwohl der Code von Variante 4 der Variante 2 ähnlich zu sein scheint, ist Variante 4 weniger effizient (aber immer noch besser als Variante 3).
Die vollständigen Benchmark-Ergebnisse (einschließlich Grafiken) finden Sie auf github .
Ich bin nicht sicher, warum Sie denken würden, dass es eine eingebaute Funktion dafür geben würde. Es ist nicht wirklich eine statistische Operation. Mehr von einer Zahlentheorie. (Es gibt viele Beispiele, die bei einer Suche im Rhelp-Archiv gefunden werden können. Ich verwende %Vor%
Tags und Links r