2016-08-09 75 views
0

我想將if語句的打印結果設置爲數據框供以後使用。如何將if語句的打印結果作爲數據框存儲?

例如,

,如果我跑,

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]) 
    } 
} 

控制檯顯示,

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

,當我稱之爲 'DF' 只顯示最後的結果。

roles user guest 
    3  1  648 

如果我想'df'是這樣的,我該如何將完整的結果存儲爲數據框?

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

爲了闡明的問題,這裏是樣本數據。 我嘗試了所有的意見,但問題並沒有解決尚未..

  • user[user[,1] %in% user_info[,1], 1:3]:輸出不與預期相符。
  • 合併和rbind:只存儲一行,而不是完整的數據。

用戶:

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

'用戶[用戶[,1]%在%USER_INFO [,1],1:3]' – Roland

+0

它似乎並不喜歡這一行工作的... 那是正確的,我要取代這個使用'df <-print(user_info [j,1:3])'行? –

+0

@WoobinYun你應該用你的整個循環代碼替換它。 –

回答

1

有關合並呢?

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

你可以試試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) 
    } 
} 
相關問題