Konvertiere die Folge der ganzen Zahlen 1, 2, 3, ... in die entsprechende Folge der Strings A, B, C,

8

Was ist eine schnelle, skalierbare Möglichkeit, die ganzen Zahlen 1 bis N in eine entsprechende Folge von Strings "A", "B", ... "Z", "AA", "AB", ... umzuwandeln die gleiche Länge?

Alternativ würde ich mich freuen, wenn etwas den Ganzzahlvektor auf einen Zeichenvektor abbildet, so dass jedes Element des Zeichenvektors die gleiche Anzahl von Zeichen hat. Z.B. 1, 2, ... 27 = & gt; "AA", "AB", ..., "AZ", "BA"

Beispieleingabe:

%Vor%

AKTUALISIEREN

Mein hackischer, aber bester Arbeitsversuch:

%Vor%     
Ben 27.09.2016, 18:22
quelle

3 Antworten

7

Mehrere nette Lösungen wurden bereits in den Kommentaren gepostet. Nur die von @Gregor hier veröffentlichte Lösung gibt derzeit die bevorzugte Lösung von Ben an.

Die Methoden von @eddi, @DavidArenburg und @G.Grothendieck können jedoch angepasst werden, um das gewünschte Ergebnis zu erhalten:

%Vor%

Alle drei ergeben:

%Vor%     
Jaap 23.05.2017, 12:19
quelle
4

Dies scheint ein großartiger Kandidat für Rcpp zu sein. Unten ist der sehr einfache Ansatz:

%Vor%

Das Ergebnis ist genau das, was die Antwort des OPs zurückgibt.

%Vor%

Aktualisierte Benchmarks einschließlich @ eddis hervorragender Rcpp Implementierung:

%Vor%

Wie @DirkEddelbuettel sagt "Rcpp ist kein magisches Pony ..." . Diese Diskrepanzen in der Effizienz zeigen nur, dass, obwohl Rcpp , oder irgendein Paket für diese Angelegenheit, super genial ist, sie nicht crappy Code reparieren werden. Danke @ededi für das Posten einer richtigen Rcpp Implementierung.

    
Joseph Wood 29.09.2016 00:13
quelle
1

Hier ist eine schnelle Rcpp Lösung, die um Größenordnungen schneller ist als native R Lösungen:

%Vor%     
eddi 29.09.2016 21:16
quelle

Tags und Links