R-basierte Lösungen, sowohl klassische Berichterstellung als auch Betriebsanalysen, haben sich in einer Unternehmensumgebung sehr gut bewährt. Zweifellos spielen RStudio und sein leidenschaftliches Team dabei eine wichtige Rolle . Bei kommerziellen RStudio-Produkten müssen Sie nicht über Infrastrukturprobleme nachdenken, sondern einfach ein wenig Geld gegen eine sofort einsatzbereite Lösung eintauschen und sich auf deren Entwickler und Support verlassen. In Open-Source-Editionen und den meisten Installationen in russischen Unternehmen müssen Sie einfach selbst über Infrastrukturprobleme nachdenken.
R-Lösungen schließen die Nische der "durchschnittlichen Daten", wenn "etwas mehr" Daten vorhanden sind, als in Excel oder ein nicht konfiguriertes relationales System passen, und komplexe Algorithmen und Verarbeitungen erforderlich sind, wenn es jedoch noch zu früh ist, den "Start" bereitzustellen Unsere Aufgaben befinden sich immer noch in der Erdumlaufbahn. Wir sprechen von zehn bis Hunderten von Terabyte in voller Länge , die problemlos in das Backend von Clikhouse passen . Ein wichtiger Punkt: Alles befindet sich in einem internen Schaltkreis, in den allermeisten Fällen VOLLSTÄNDIG vom Internet abgeschnitten.
In Fortsetzung einer Reihe früherer Veröffentlichungen werden die Bausteine für eine robuste Enterprise R-Anwendung verfeinert .
Problematisch
Für eine produktive Lösung müssen Sie reproduzierbare Ergebnisse und Berechnungen sicherstellen. Das Problem der Reproduzierbarkeit ist in verschiedene Richtungen unterteilt. Große Blöcke können unterschieden werden:
infrastrukturelle Reproduzierbarkeit. Viele Fragen werden mit einer Kombination aus Docker + Renv + Git-Technologien abgeschlossen.
Software-Reproduzierbarkeit. Viele Fragen werden durch die Technologie von Paketen und Autotests geschlossen.
statistische "Ähnlichkeit" der Ergebnisse. Hier entsteht die Spezifität jeder einzelnen Aufgabe. Einige Punkte werden unten vorgeschlagen, um dies sicherzustellen.
Was ist die Schwierigkeit?
Algorithmen "in die Produktion eingeführt"
kann mehrphasig mit einer kumulierten Berechnungszeit von mehreren Stunden sein;
«» ( , excel , ..);
, ;
;
.
, ;
, . .
( ) , . , . , prod (), dev .
, . , , . , . . , (availability) X% $Y. .
. , .
, .
. .
.
data.frame
, «» , .
, :
warning
message
, . , .
, .Rds
(1-1000 Ram) . 3 :
-- . , , .. .
:
, . Win-Vector.
pipe (%>%
). . - ( «» « », ), . , , .
.
:
tidylog. ,
tidylog
tidyverse
,dpylr::mutate
.
-
, :
«Debugging with RStudio by Jonathan McPherson»
«Advanced R», . «Debugging»
(shiny )?
browser()
. IDE. . -- . .
debug()
/undebug()
/debugonce()
. , .., .
traceback()
. .
options(datatable.verbose = TRUE)
.data.table
( , , ).
utils::getFromNamespace
. .
-
pryr::object_size()
. «» .
reprex
. .
gginnards
. ggplot.
browser()
, data.table
.
library(data.table)
library(magrittr)
dt <- as.data.table(mtcars) %>%
.[, {m <- head(.SD, 2); print(ls()); browser(); m}, by = gear]
#> [1] "-.POSIXt" "am" "carb" "Cfastmean" "cyl" "disp"
#> [7] "drat" "gear" "hp" "m" "mpg" "print"
#> [13] "qsec" "strptime" "vs" "wt"
#> Called from: `[.data.table`(., , {
#> m <- head(.SD, 2)
#> print(ls())
#> browser()
#> m
#> }, by = gear)
. ( ) , .
-
-
system.time({…})
-
-
.
? . , , .
-
Bei praktischen Problemen kann es allerlei Überraschungen geben, die Magie der BigData hilft nicht immer, wir lesen den ironischen Detektiv "Mit AWK und R 25tb analysieren"
Vorherige Veröffentlichung - "Wie kann man Process Mining mit R in einem Unternehmen zähmen?" ...