2016-07-14 103 views
0

我是R新手,希望在一個數據幀的每次迭代中獲得for循環輸出。下面是代碼,在這裏我想在Results數據幀R數據幀中的迴路輸出

for (i in 1:nrow(base_data)) { 
LCS1 <- expand.grid(STREET=base_data$STREET[1:nrow(base_data)],REF_STREET=base_data$STREET[i]) 
LCS$LCS_stringdist=stringdist(LCS$STREET,LCS$Name1,method="lcs") 
Results <- head(LCS[order(LCS$LCS_stringdist),],20) 
} 
+0

請詳細說明。你是什​​麼意思*在結果數據框中獲取數據*?什麼是錯誤或不良結果?什麼是當前數據和期望的結果? – Parfait

+0

'head(...,20)'將返回LCS數據幀的前20行。所以你想通過循環在每次迭代中向結果添加20行? – Gregor

+0

@Gregor是的,我想從每次迭代增加前20名的觀察,最終結果 – Vinay

回答

1

獲取數據,我認爲最簡單的方法是分配到列表的項目,然後裝訂成在最後一個數據幀。

results_list = list() 

for (i in 1:nrow(base_data)) { 
    LCS1 <- expand.grid(STREET=base_data$STREET[1:nrow(base_data)],REF_STREET=base_data$STREET[i]) 
    LCS$LCS_stringdist=stringdist(LCS$STREET,LCS$Name1,method="lcs") 
    results_list[[i]] <- head(LCS[order(LCS$LCS_stringdist),],20) 
} 

Results = do.call(rbind, results_list) 

## faster options in other packages 
Results = dplyr::bind_rows(results_list) 
Results = data.table::rbindlist(results_list) 
+0

謝謝,這確實奏效 – Vinay