2016-06-16 7 views
0

Ich habe eine Schleife in R geschrieben. Der Code wird voraussichtlich eine Liste von Variablen in einer Liste durchlaufen und dann für jede der Variablen eine Funktion ausführen.Schreiben einer Schleife in R

Problem 1 - I nicht in einer Schleife durch die Liste der Variablen kann
Problem 2 - Ich brauche jeden Ausgang von den Werten in Mongo DB

Hier eingefügt ist ein Beispiel der Liste:

121715771201463_626656620831011 
121715771201463_1149346125105084 

Basierend auf diesem Wert - ich führe einen Code und ich möchte diese Ausgabe in MongoDB eingefügt werden. Gerade jetzt nur der erste Wert und der entsprechende Ausgang eingefügt

test_list < - C ("121715771201463_626656620831011", "121715771201463_1149346125105084", "121715771201463_1149346125105999")

für (i in test_list) {// myfunction // mongo.insert (mongo, DBNS, i) }

ich in der Lage bin, um nur die Werte für die f zu holen erster Wert und nicht alles aus der Liste

Jede Hilfe wird geschätzt.

+2

sollten Sie sollten wahrscheinlich klein 'c' verwenden, wenn Sie eine Liste erstellen: test_list <- c ("121715771201463_626656620831011", "121715771201463_1149346125105084", "121715771201463_1149346125105999") –

Antwort

0

Es ist nicht klar, ob "Variable" hier gleich "Wert" ist.

Wenn das, was Sie mit Variable meinen, tatsächlich ein Element in der Liste ist, die Sie konstruieren, dann denke ich, Ilyas Kommentar kann das Problem lösen. Wenn "Variable" stattdessen ein Objekt im Arbeitsbereich ist und die Elemente in der Liste die Namen der Objekte sind, die Sie verarbeiten möchten, müssen Sie sicherstellen, dass Sie get verwenden. Wie folgt aus:

for(i in ls()){ 
    cat(paste(mode(get(i)),"\n")) 
} 

ls() gibt eine Liste der Namen von Objekten. Die obige Schleife durchläuft alle, verwendet get auf sie, um das richtige Objekt zu erhalten. Von dort aus können Sie die gewünschte Bearbeitung vornehmen (im obigen Beispiel habe ich einfach den Modus des Objekts gedruckt).

Hoffe, das hilft irgendwie.

1

dieses Beispiel, das die letzten Zeichen druckt

myfunction <- function(x){ print(substr(x, 27, nchar(x))) } 

test_list <- c("121715771201463_626656620831011", 
       "121715771201463_1149346125105084", 
       "121715771201463_1149346125105999") 
for (i in test_list){ myfunction(i) } 
for (j in 1:length(test_list)){ myfunction(test_list[j]) } 

Die letzten beiden Linien produzieren jeweils

[1] "31011" 
[1] "105084" 
[1] "105999" 
+0

Ich war in der Lage, Ihre Logik zu reproduzieren, ich begann damit, alle vorhandenen Objekte zu entfernen und Speicherplatz freizugeben, und dann funktioniert die Logik ... – ThePatBan