2016-08-09 1 views
0

Ich möchte das gedruckte Ergebnis der if-Anweisung als Datenframe für die spätere Verwendung festlegen.Wie kann ich gedruckte Ergebnisse von if-Anweisungen als Datenframes speichern?

Zum Beispiel

wenn ich laufe,

for(i in 1:nrow(user)){ 
for(j in 1:nrow(user_info)){ 
    if(user[i,1]==user_info[j,1]) 
      df<-print(user_info[j,1:3]) 
    } 
} 

die Konsole zeigt,

1 roles user guest 
    1 1 15 
2 roles user guest 
    2 1 367 
3 roles user guest 
    3 1 648 

und wenn ich 'df' nennen es zeigt nur das letzte Ergebnis.

roles user guest 
    3  1  648 

Wie kann ich das vollständige Ergebnis als Datenframe speichern, wenn ich 'df' so haben möchte?

roles user guest 
1 1 15 
2 1 367 
3 1 648 

Um die Frage zu klären, hier sind die Beispieldaten. habe ich versucht, alle Kommentare, aber das Problem ist nicht gelöst noch ..

  • user[user[,1] %in% user_info[,1], 1:3]: Ausgang nicht mit dem erwarteten eines nicht übereinstimmt.
  • merge und rbind: nur eine Zeile speichern, nicht die vollständigen Daten.

Benutzer:

roles action created_at 
    10  1  2016-08-01 
    10  1  2016-08-01 
    1  1  2016-08-01 
    3  2  2016-08-01 
    4  1  2016-08-01 
    5  1  2016-08-01 
    5  2  2016-08-02 
    8  1  2016-08-02 
    9  1  2016-08-02 
    7  2  2016-08-02 

user_info:

roles user guest 
    1  1 15 
    2  1 367 
    3  14 42 
    4  2 34 
    5  4 2 
    6  3 100 
    7  23 32 
    8  9 49 
    9  55 12 
    10 8 291 
+2

'user [user [1]% in% user_info [1], 1: 3]' – Roland

+0

Es scheint nicht, wie diese Linie funktioniert ... Ist das richtig, dass ich diese ersetzen soll Zeile mit 'df <-print (user_info [j, 1: 3])'? –

+0

@WoobinYun Sie sollten es mit Ihrem gesamten Loop-Code ersetzen. –

Antwort

1

Was verbindet?

merge(user_info, user, by = "role")[, 1:3] 
0

Können Sie versuchen rbind?

for(i in 1:nrow(user)){ 
for(j in 1:nrow(user_info)){ 
    if(user[i,1]==user_info[j,1]) 
      user_info<-print(user_info[j,1:3]) 
      df<-rbind(df,user_info) 
    } 
} 
Verwandte Themen