2016-07-14 3 views
0

저는 R에 익숙하지 않고 하나의 데이터 프레임에서 각 반복마다 루프 출력을 얻으려고합니다. 아래는 내가 Results dataframe루프 출력 in 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 개 행을 반환합니다. 그래서 루프를 통해 반복 할 때마다'Results'에 20 개의 행을 추가하고 싶습니까? – Gregor

+0

예, 나는 'NAME ---- 다음과 같은 데이터가 @Parfait 최종 결과 – 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