Joe's Random Thoughts
Willkommen!
Wir praktizieren Open Science hier.
Über mich
Ich bin ein INTJ-A Art von Person, die eklektische, abnormale, atypische Aspekte des Lebens schätzt. Ich habe gemeistert Wing Chun in der High School, Physikalische Mathematik in der Universität und Optimierungstechnik in meiner beruflichen Laufbahn.
Persönliches Leben
Verheiratet mit der erstaunlichsten Frau der Welt, deren Liebe zu mir uns beide mit einer kostbaren Tochter gesegnet hat. Wir leben in Südflorida und betreiben gemeinsam meine S-CORP https://sunstarsys.com, die Infrastrukturhardware und -software für diese Site bereitstellt.
Mein lieber Freund Delia Frees, für mich
Kennen Sie die Rolle der Heyókotaa in der indianischen Kultur? Du, meine Liebe, bist mein persönlicher Heyókotaa.
Ich habe erstellt https://iconoclasts.blog um verwandten Geistern online gerecht zu werden; die eine öffentliche, zensurfreie, langfristige Essay-Schreibgemeinschaft benötigen — die politisch unangenehmsten, avantgardistischen Ideen des anderen zu teilen und mit ihnen zu interagieren.
Wenn das nach dir klingt, bitte Demo noch heute anfordern!
size(0,25cm);
guide center=(0,1){W}..tension 0.8..(0,0){(1,-.5)}..tension 0.8..{W}(0,-1);
draw((0,1)..(-1,0)..(0,-1));
filldraw(center{E}..{N}(1,0)..{W}cycle);
unfill(circle((0,0.5),0.125));
fill(circle((0,-0.5),0.125));
Plan
Experimente
Sandbox: SSI-Mindmap
Sandbox: SSI Asymptote-Vektorgrafiken
// tubular trefoil knot -*- asy -*-
import tube;
import graph3;
import palette;
size(0, 8cm);
currentlight=White;
real redPortion = 143 / 256;
real greenPortion = 153 / 256;
real bluePortion = 251 / 156;
pen periwinklePen = redPortion * red + greenPortion * green + bluePortion * blue;
// currentlight.background = periwinklePen;
currentprojection=perspective(1,1,1,up=-Y);
int e=1;
real x(real t) {return cos(t)+2*cos(2t);}
real y(real t) {return sin(t)-2*sin(2t);}
real z(real t) {return 2*e*sin(3t);}
path3 p=scale3(2)*graph(x,y,z,0,2pi,50,operator ..)&cycle;
pen[] pens=Gradient(6,red,blue,purple);
pens.push(yellow);
for (int i=pens.length-2; i >= 0 ; --i)
pens.push(pens[i]);
path sec=scale(0.25)*texpath("$\pi$")[0];
coloredpath colorsec=coloredpath(sec, pens,colortype=coloredNodes);
draw(tube(p,colorsec),render(merge=true));
Sandbox: Von SSI generierte Tabelle —
Abgerufen von @chrisarg=
| R type | Perl equivalent | PDL equivalent | Notes |
|---|---|---|---|
double (length-1) |
$x = 3.14 (scalar) |
double(3.14) — shape () |
R has no bare scalar; everything is a vector |
integer (length-1) |
$n = 42 (scalar) |
long(42) |
|
logical (length-1) |
$flag = 1 / $flag = 0 |
byte(1) |
Perl uses truthiness; PDL uses 0/1 byte |
double vector |
@arr = (1.1, 2.2, 3.3) |
double(1.1, 2.2, 3.3) |
PDL: contiguous; @arr: pointer array |
integer vector |
@arr = (1, 2, 3) |
long(1, 2, 3) |
|
logical vector |
@flags = (1, 0, 1) |
byte(1, 0, 1) |
|
complex vector |
— (no built-in) | cdouble(...) |
Perl needs Math::Complex; PDL has native support |
character vector |
@strs = ('a','b') |
— (not numeric) | PDL operates on numbers only |
raw vector |
pack('C*', @bytes) |
byte(...) |
|
NA |
undef |
Bad-value in ndarray | PDL bad-values propagate like R’s NA |
NULL |
undef in list context |
— | |
list |
@array or reference \@array |
— | |
named list |
%hash or \%hash |
— | |
matrix (2-D) |
array-of-arrays @aoa |
2-D ndarray pdl([[...],[...]]) |
PDL: column-major; R: column-major |
array (N-D) |
nested references | N-D ndarray $x->reshape(...) |
|
data.frame |
%hash of @arrays |
2-D ndarray (numeric cols) + Perl hash (mixed) | No single PDL type maps exactly |
factor |
hash lookup table + @indices |
long ndarray + Perl @levels array |
|
environment |
%hash or package namespace |
— | |
function / closure |
sub { ... } / closure |
— | PDL PP defines compiled kernels |
S3 / S4 object |
blessed reference + method dispatch | PDL object (blessed ndarray) | PDL objects are first-class Perl objects |
| Joe’s Row | Zwei | Drei | |
| zusätzlich | Spaß | unten | Linie |
Ein Erbe, das auf Text- und Datenmung basiert
Perl wurde von Grund auf für Textverarbeitung, reguläre Ausdrücke und “Kleber” zwischen Systemkomponenten arbeiten In der Praxis werden wissenschaftliche Datenpipelines nicht von numerischer Berechnung dominiert, sondern von Data Wrangling: Lesen heterogener Dateiformate, Bereinigen chaotischer Datensätze, Verknüpfen von Datensätzen aus verschiedenen Quellen und Weiterleiten von Ergebnissen zu nachgelagerten konsumierenden Komponenten.
Perls reguläre Ausdrücke gehören weiterhin zu den leistungsstärksten verfügbaren, und Einzeiler können Datenreinigungsaufgaben ausführen, die Helferbibliotheken in anderen Sprachen erfordern würden.
Wenn Sie sich im Bereich des wissenschaftlichen Rechnens befinden, sind Sie möglicherweise auf die Begriffe workflow management systems und reproduzierbare Forschung gestoßen. Beide verlassen sich auf die Ausführung von End-to-End-Datentransformationen und Workflows, um die manuellen, fehleranfälligen und langwierigen Point-and-Click-Aktivitäten zu eliminieren, die Analysten und Wissenschaftler tun müssen, um ihre Daten in Erkenntnisse und Schlussfolgerungen zu verwandeln.
In dieser mutigen neuen Welt ermöglicht die umfangreiche Geschichte von Perl5, sowohl als Komponente von Workflows als auch als Anwendungssprache, die diese Workflows implementiert, zu glänzen.
Wichtige Erkenntnisse
Für reine numerische, homogene Daten (Vektoren, Matrizen, Tensoren), sind PDL-Ndarrays und R-Atomvektoren funktional äquivalent und vergleichsweise effizient.
Für heterogene tabellarische Daten (gemischte Typen, Zeichenfolgenspalten, Faktoren), Rs
data.frameist ergonomischer; Perl verwendet in der Regel einen Hash von Arrays oder ein dediziertes Modul wieData::FrameoderPDL::IO::CSV.Für Text, unregelmäßige Strukturen und Systemkleber sind Perls native Typen sowohl R als auch Python überlegen.
Die Kombination Perl+PDL bietet daher die Union dessen, was R als statistische Sprache bietet und was Perl als Systemsprache anbietet - auf Kosten einer steileren Lernkurve und weniger out-of-the-box nd offen gesagt begrenzten statistischen Tools.
die Kombination von Perl+PDL+R (mit der letzteren als Komponente verwendet wird, oder instrumentalisiert perl)