2017-11-02 15 views
1

문제점 : R Studio 콘솔과 함수에서 동일한 SQL 쿼리를 실행할 때 두 가지 결과가 나타나며 누군가 내게 말할 수 있기를 바랬습니다. 부작용이 어디서 오는지. 사용되는 데이터 프레임에는 3 개의 필드 (id, timestamp, cluster) 만 있습니다.sqldf가 콘솔과 코드에서 다른 결과를 나타냅니다.

get_cluster_boundaries <- function(clustering_result) { 
    library(sqldf) 
    dfname <- deparse(substitute(clustering_result)) 
    all_clusters <- sqldf(paste("SELECT DISTINCT(cluster) FROM ", dfname, sep="")) 
    for(cluster_no in all_clusters) { 
    lquery <- paste("SELECT min(timestamp) FROM ", dfname, " WHERE cluster = ", cluster_no, sep="") 
    lower_end <- sqldf(lquery) 
    uquery <- paste("SELECT max(timestamp) FROM ", dfname, " WHERE cluster = ", cluster_no, sep="") 
    upper_end <- sqldf(uquery) 
    print(paste("Cluster ", cluster_no, " starts from ", lower_end, " to ", upper_end, sep="")) 
    } 
} 

이 모든 클러스터 나에게 하나의 결과를 제공, 개인 uquery 및 lquery을 copypasting 여전히 사용 sqldf하여 R 스튜디오 콘솔을 실행하는 동안 저을 제공 : 다음과 같은 것이

내 기능입니다 각 클러스터의 올바른 시작 날짜와 종료 날짜

+0

으로 시도합니다. –

답변

2

내 추측이지만 작동하는지 확인할 수는 없지만 all_clusters는 vector가 아니라 data.frame입니다. sqldf 도움말 페이지에서 우리는

결과는 데이터로 출력됩니다.

는 [mcve] 검토하십시오

for (cluster_no in all_clusters[,1]) 
+0

당신은 틀린 것입니다! 감사! –