如何检查R流包中的流结束

如何检查R流包中的流结束,r,data-stream,R,Data Stream,我是R编程新手。我面临一个与流相关的问题。 我正在从文本文件读取数据流文件。当一条小溪到达小溪的尽头时。我无法处理这个问题 Micro_cluster<-function(data_stream) { list_counter<-1; micro_clusters<-list(); while(TRUE) { points<-DSD_Wrapper(get_points(data_stream,n=1000)); if(!

我是R编程新手。我面临一个与流相关的问题。 我正在从文本文件读取数据流文件。当一条小溪到达小溪的尽头时。我无法处理这个问题

 Micro_cluster<-function(data_stream)
   {
     list_counter<-1;
  micro_clusters<-list();
  while(TRUE)
  {
     points<-DSD_Wrapper(get_points(data_stream,n=1000));
     if(!points)
     {
        print("End of Stream");    
     }
     else
     {
       mcluster<-DSC_DenStream();
       cluster(mcluster,points,n=1000);
       micro_clusters[list_counter]<-list(mcluster);
       list_counter<-list_counter+1;
       rm(mcluster);    
     }

  }
  rm(list_counter);

} 

Micro_cluster不一定能回答特定的问题而不看到您试图输入的内容,但是-您知道您实际上并没有结束WHILE循环,对吗?它将永远迭代。大概你想要的是

#Set an object that handles the boolean for the while loop, so that you can actually kill said loop
while_check <- TRUE

while(while_check)
{
 points<-DSD_Wrapper(get_points(data_stream,n=1000));
 if(!points)
 {
    print("End of Stream");
    #If there aren't any entries left, change that value so that the loop stops.
    while_check <- FALSE

 }
 else
 {
   mcluster<-DSC_DenStream();
   cluster(mcluster,points,n=1000);
   micro_clusters[list_counter]<-list(mcluster);
   list_counter<-list_counter+1;
   rm(mcluster);    
 }

}
#为while循环设置一个处理布尔值的对象,这样您就可以实际终止所述循环
同时检查我的问题陈述
我有一组与纽约数据集相关的健康数据。
文件结构,例如

每日个案的经度

所以创建了一个文件,记录大约17699997条。因此,我必须使用流包创建一个流,从文件中提取1000个数据。然后我将对在线集群应用Denstram()算法和相同的1000点get,并应用离线算法,如K-means,DBSACN

我想从文件apply online和offline cluster中获得1000分。老化过程需要1000分钟,直到流结束

因此,我创建了以下代码。但在其中我无法找到河流的尽头

但我想通知用户,流已经结束了。 两个过程

在线过程 脱机进程


Denstream\u dbs实际上我从stream中得到了1000点。但我想在结束StreamPoints之前通知我您收到的错误消息是什么?而且,您确定在最后一次迭代中,流中还有1000个点吗?如果没有可复制的示例(换句话说,生成此错误的示例数据集),调试会有点困难。文件结构,如>经度,因此创建的一个文件中包含17699997条左右的记录。因此,我必须使用流包创建一个流,从文件中提取1000个数据。然后我将对在线集群应用Denstram()算法和相同的1000点get,并应用离线算法,如K-means,DBSACN。我想从文件apply online和offline cluster中获得1000分。在流即将结束之前,老化时间为1000。但我想通知用户流已结束。我无法通知。我指的是一个实际的示例数据集;)。你应该编辑你的问题并把这些信息放进去。
 40.00    -73.25     1    1
 Denstream_Dbscan<-function(Wrapper_Data_Stream)
{
  i<-1;
  while(TRUE)
  {


    # online process(micro cluster)
    start_time<-Sys.time();

    print(paste("Start online Process ",i," iteration",Sys.time()));
    dstream_micro<-DSC_DenStream(epsilon=0.01,initPoints=200,minPoints=500);
    system.time({
    cluster(dstream_micro,Wrapper_Data_Stream,n=1000,verbose=TRUE);    
    })
   # print(paste("center of cluster=",get_center(dstream_micro)));
    print(paste("no of micro cluster=",nclusters(dstream_micro,type="auto")));

    jpeg(paste("Micro Cluster(Online)_",i,".jpeg"));
    plot(dstream_micro,dsd=Wrapper_Data_Stream,pch=c(1,2),col_points="red",col_clusters="green",xlab="latitude",ylab="longitude", main=paste("TimeTaken=",start_time-end_time),sub=paste("micro cluster:",Sys.time()),col.main="red",col.sub="black");
    print(paste("End online Process  for ",i," iteration",Sys.time()));
    dev.off();


    # offline process (macro cluster)

    print(paste("Start offline Process ",i," iteration",Sys.time()));
    start_time<-Sys.time();
    dbscan_macro<-DSC_DBSCAN(eps=0.1)
    system.time({
    recluster(dbscan_macro,dstream_micro);

    })

    print(paste("no of macro cluster=",nclusters(dbscan_macro)));
   # print(paste("center of cluster=",get_center(dstream_micro)));
    end_time<-Sys.time();
    jpeg(paste("Macro Cluster(offline)_",i,".jpeg"));
    plot(dbscan_macro,Wrapper_Data_Stream,pch=c(1,2),col_points="grey",col_clusters="blue",xlab="latitude",ylab="longitude",main=paste("TimeTaken=",start_time-end_time),sub=paste("macro cluster:",Sys.time()),col.main="red",col.sub="black");
    dev.off();
    print(paste("End Offline Process  for ",i," iteration",Sys.time()));
    i<-i+1;

    }
}