首页 > 解决方案 > 在嵌入式 for 循环函数中接收“较长的对象长度不是较短对象长度的倍数”

问题描述

任何人都知道为什么这段代码只迭代一次。我遇到的主要问题是,在第 141 行,DeviceID == user, Time == day 的过滤器完全没有做任何事情。当我检查环境时,这些用户和日期的值似乎是正确的(请参阅附加的环境屏幕截图),但数据框 final_locations_ID 未过滤为 DeviceID == user, Time == day,但也未过滤(值缺少那些没有真正意义的东西)。这是我第一次在 r 中使用 for 循环,使用 <- 仍然合适,或者这会导致我的问题。下一个 for 循环,旨在找到每个不同的集群,并记录平均纬度和经度点,但 num 只有 1 的值,这意味着只检测到 1 个集群,这没有什么意义。

代码的目标是遍历 users 中的每个用户,然后遍历每个用户的每一天。在当天为该特定用户运行 dbscan,然后找到每个独特的集群,将当天该用户的每个集群的平均纬度和经度坐标附加到列表中。

cluster_info <- c("hi", "hello")


for(user in users){
  for(day in days_distinct){
    final_locations_ID <- final_locations %>% filter(DeviceID == user, Time == day)
    trajectory_cluster <- dbscan(select(final_locations_ID, lat, lon), eps = .01, minPts = 8)
    final_locations_cluster <- final_locations_ID %>% mutate(Cluster = trajectory_cluster$cluster)
    numbers <- distinct(final_locations_cluster, Cluster) %>% filter(Cluster != "0")
    
    for(num in numbers){
      final_cluster_num <- final_locations_cluster %>% filter(Cluster == num)
      cluster_info <- c(cluster_info, paste("(", mean(final_cluster_num$lat), ",", mean(final_cluster_num$lon), ")"))
      
    }
  }   
}

cluster_info

标签: rfor-loop

解决方案


推荐阅读