Vektor mit vorgegebener Anzahl an Elementen erstellen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
ruppy
Beiträge: 41
Registriert: Mo Nov 04, 2019 10:05 pm

Vektor mit vorgegebener Anzahl an Elementen erstellen

Beitrag von ruppy »

Hi zusammen,

ist etwas schwierig für die Fragestellung einen geeigneten Titel zu finden. Die Frage selbst sollte ich aber gut beschreiben können.

Angenommen ich habe einen Vektor mit IDs bspw. Kundennummern:

Code: Alles auswählen

x <- 1:100
Aus diesem Vektor erstelle ich mir aktuell einen Vektor in dieser Form (diesen verwende ich in einer anderen Funktion gewissermaßen als Query um Abfragen gege eine NoSQL-Datenbank laufen zu lassen):

Code: Alles auswählen

query <- paste0("customer_id: ", x)
Dann erhalte ich einen Vektor der Länge 100. Ich hätte stattdessen aber lieber einen kürzeren Vektor bspw. mit Länge 50. Dieser müsste dann so aussehen:

Code: Alles auswählen

"customer_id: 1 OR 2" ... "customer_id: 99 OR 100"
Hintergrund ist, dass dann nur 50 statt 100 Abfragen gegen die NoSQL-Datenbank laufen, was natürlich bedeutend schneller ist.

Mir ist durchaus bewusst, dass auch die Abfrage an sich Optimierungspotential hat (in SQL-Logik über Kombi aus WHERE und IN).

Mir geht es aber tatsächlich nur um die Erstellung dieses Vektors.

Interessant wäre auch wie man am besten vorgeht wenn der initiale Vektor "x" mal die Länge 119, 122 oder was auch immer hat.

Hoffe es ist verständlich :)

Vielen Dank und beste Grüße

ruppy
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Vektor mit vorgegebener Anzahl an Elementen erstellen

Beitrag von bigben »

Vielleicht so?

Code: Alles auswählen

n <-100 # vorläufig für gerade Zahlen
customer.id <- sample(1000:3000, n)
head(customer.id,10)

nebeneinander <- data.frame(ungerade.id = customer.id[seq(1, n-1, 2)],
                            gerade.id = customer.id[seq(2, n, 2)])

nebeneinander$call <-  paste0("customer_id: ", nebeneinander[, 1], " OR " , nebeneinander[, 2])

head(nebeneinander, 10)
Natürlich kann man das auch zu einem Einzeiler ohne den zusätzlichen Data.frame umformulieren und natürlich müsstest Du noch entscheiden, was bei ungeraden Kundenzahlen passieren soll, aber das kriegst Du hin.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
ruppy
Beiträge: 41
Registriert: Mo Nov 04, 2019 10:05 pm

Re: Vektor mit vorgegebener Anzahl an Elementen erstellen

Beitrag von ruppy »

Hi bigben,

vielen Dank für die Antwort.

Hat funktioniert. Habe es auf 4 Ids je Query erweitern können und mit furrr parallelisiert

War dann von der Dauer her akzeptabel.

BG ruppy
Antworten