R 单张分行

R 单张分行,r,maps,leaflet,coordinates,r-leaflet,R,Maps,Leaflet,Coordinates,R Leaflet,我试图用传单画线,但是我在分割片段时遇到了一些困难。我有一个像这样的物体 > head(trips, n=15) time.start time.end long.start long.end lat.start lat.end distance time.diff speed color 1 1476450598 1476450713 9.03913 9.03924 45.61335 45.61362 31.25292 115 0.97

我试图用传单画线,但是我在分割片段时遇到了一些困难。我有一个像这样的物体

> head(trips, n=15)
   time.start   time.end long.start long.end lat.start  lat.end  distance time.diff      speed color
1  1476450598 1476450713    9.03913  9.03924  45.61335 45.61362  31.25292       115  0.9783524 green
2  1476450713 1476450727    9.03924  9.03995  45.61362 45.61365  55.38651        14 14.2422459 green
3  1476450727 1476450751    9.03995  9.04005  45.61365 45.61340  28.89870        24  4.3348057 green
4  1476450751 1476450777    9.04005  9.04017  45.61340 45.61406  74.06267        26 10.2548313 green
5  1476450777 1476450873    9.04017  9.03949  45.61406 45.61419  54.89125        96  2.0584219 green
6  1476450873 1476450920    9.03949  9.03496  45.61419 45.61319 369.88687        47 28.3317600 green
7  1476450920 1476450930    9.03496  9.03440  45.61319 45.61295  51.13973        10 18.4103034 green
8  1476450930 1476450932    9.03440  9.03448  45.61295 45.61285  12.75643         2 22.9615714 green
9  1476450932 1476450982    9.03448  9.03495  45.61285 45.61241  61.14351        50  4.4023330 green
10 1476451362 1476451363    9.03553  9.03559  45.61197 45.61188  11.05462         1 39.7966396 green
11 1476451363 1476451373    9.03559  9.03606  45.61188 45.61129  75.18742        10 27.0674701 green
12 1476451373 1476451382    9.03606  9.03712  45.61129 45.61127  82.57276         9 33.0291031 green
13 1476451382 1476451405    9.03712  9.04059  45.61127 45.61095 272.54942        23 42.6599094 green
14 1476451405 1476451412    9.04059  9.04115  45.61095 45.61091  43.83450         7 22.5434586 green
15 1476451412 1476451431    9.04115  9.04440  45.61091 45.61064 254.85994        19 48.2892512 green
 head(mydata, n=15)
        lat    long
1  45.61335 9.03913
2  45.61362 9.03924
3  45.61365 9.03995
4  45.61340 9.04005
5  45.61406 9.04017
6  45.61419 9.03949
7  45.61319 9.03496
8  45.61295 9.03440
9  45.61285 9.03448
10 45.61197 9.03553
11 45.61188 9.03559
12 45.61129 9.03606
13 45.61127 9.03712
14 45.61095 9.04059
15 45.61091 9.04115
该文件以两次行程为例(还有很多次,但只是给出一个想法),理想情况下,第9点(第一次行程的结束)不应链接到第10点(第二次行程的开始)。我是用命令完成的

   ggmap(mapImageData)+
  geom_segment(data=trips, mapping=aes(y=trips$lat.start, x=trips$long.start, 
                                       yend=trips$lat.end, xend=trips$long.end),color=trips$color,size=1)
在此代码中,
mapImageData
相当于传单中的瓷砖,然后我使用命令
geom_segment
添加点,指定每个点的初始和最终位置

对于传单,我必须使用命令
addPolylines(data=mydata,lng=~long,lat=~lat,weight=1,color=“purple”)
。不同之处在于,这个命令需要一列经度和一列纬度,在我的示例中是这样的

> head(trips, n=15)
   time.start   time.end long.start long.end lat.start  lat.end  distance time.diff      speed color
1  1476450598 1476450713    9.03913  9.03924  45.61335 45.61362  31.25292       115  0.9783524 green
2  1476450713 1476450727    9.03924  9.03995  45.61362 45.61365  55.38651        14 14.2422459 green
3  1476450727 1476450751    9.03995  9.04005  45.61365 45.61340  28.89870        24  4.3348057 green
4  1476450751 1476450777    9.04005  9.04017  45.61340 45.61406  74.06267        26 10.2548313 green
5  1476450777 1476450873    9.04017  9.03949  45.61406 45.61419  54.89125        96  2.0584219 green
6  1476450873 1476450920    9.03949  9.03496  45.61419 45.61319 369.88687        47 28.3317600 green
7  1476450920 1476450930    9.03496  9.03440  45.61319 45.61295  51.13973        10 18.4103034 green
8  1476450930 1476450932    9.03440  9.03448  45.61295 45.61285  12.75643         2 22.9615714 green
9  1476450932 1476450982    9.03448  9.03495  45.61285 45.61241  61.14351        50  4.4023330 green
10 1476451362 1476451363    9.03553  9.03559  45.61197 45.61188  11.05462         1 39.7966396 green
11 1476451363 1476451373    9.03559  9.03606  45.61188 45.61129  75.18742        10 27.0674701 green
12 1476451373 1476451382    9.03606  9.03712  45.61129 45.61127  82.57276         9 33.0291031 green
13 1476451382 1476451405    9.03712  9.04059  45.61127 45.61095 272.54942        23 42.6599094 green
14 1476451405 1476451412    9.04059  9.04115  45.61095 45.61091  43.83450         7 22.5434586 green
15 1476451412 1476451431    9.04115  9.04440  45.61091 45.61064 254.85994        19 48.2892512 green
 head(mydata, n=15)
        lat    long
1  45.61335 9.03913
2  45.61362 9.03924
3  45.61365 9.03995
4  45.61340 9.04005
5  45.61406 9.04017
6  45.61419 9.03949
7  45.61319 9.03496
8  45.61295 9.03440
9  45.61285 9.03448
10 45.61197 9.03553
11 45.61188 9.03559
12 45.61129 9.03606
13 45.61127 9.03712
14 45.61095 9.04059
15 45.61091 9.04115
然而,这将连接所有点,我如何知道何时不连接点?例如,位置9和位置10不应该相互链接。 谢谢
马可

首先,我们需要一种方法来区分不同的旅行。
我曾经

结果:

尽管这是一个
for循环
,但速度相当快。为了加快速度,我们可以使用
lappy

m <- leaflet(df) %>% 
        addTiles()

lapply(unique(df$group), 
       function(x) {
            addPolylines(m, 
                         data = df[df$group == x, ], 
                         lng = ~long.start, 
                         lat = ~ lat.start)
        })
m%
addTiles()
lapply(唯一(df$组),
功能(x){
添加多段线(m,
数据=df[df$group==x,],
液化天然气=~long.start,
纬度=~lat.start)
})
rbenchmark::benchmark(
应用={
m%
addTiles()
Lappy(唯一(df$组),函数(x){
添加多段线(m,
数据=df[df$group==x,],
液化天然气=~long.start,
纬度=~lat.start)
})
},
forcycle={
m%
addTiles()
对于(我是唯一的(df$组)){
添加多段线(m,
数据=df[df$group==i,],
液化天然气=~long.start,
纬度=~lat.start)
}}, 
复制次数=1000次)
#>相对user.self sys.self user.child的测试复制
#>1适用于1000 2.91 1.000 2.92 0 NA
#>2 forcycle 1000 3.04 1.045 3.00 0 NA

首先,我们需要一种方法来区分不同的行程。
我曾经

结果:

尽管这是一个
for循环
,但速度相当快。为了加快速度,我们可以使用
lappy

m <- leaflet(df) %>% 
        addTiles()

lapply(unique(df$group), 
       function(x) {
            addPolylines(m, 
                         data = df[df$group == x, ], 
                         lng = ~long.start, 
                         lat = ~ lat.start)
        })
m%
addTiles()
lapply(唯一(df$组),
功能(x){
添加多段线(m,
数据=df[df$group==x,],
液化天然气=~long.start,
纬度=~lat.start)
})
rbenchmark::benchmark(
应用={
m%
addTiles()
Lappy(唯一(df$组),函数(x){
添加多段线(m,
数据=df[df$group==x,],
液化天然气=~long.start,
纬度=~lat.start)
})
},
forcycle={
m%
addTiles()
对于(我是唯一的(df$组)){
添加多段线(m,
数据=df[df$group==i,],
液化天然气=~long.start,
纬度=~lat.start)
}}, 
复制次数=1000次)
#>相对user.self sys.self user.child的测试复制
#>1适用于1000 2.91 1.000 2.92 0 NA
#>2 forcycle 1000 3.04 1.045 3.00 0 NA

您可以融化数据并保留行名称。使用
group
参数(行名称将是分组)指定开始和停止。您可以融化数据并保留行名称。使用
group
参数(行名称将是分组)指定开始和停止。非常感谢您的帮助,它工作得很好,只是一个问题,有没有方法在不使用for循环的情况下复制相同的结果?如ggmap将如何做?我这样问是因为当有很多迭代时,for循环通常非常慢。再次感谢您非常感谢您的帮助,它工作得非常完美,只是一个问题,有没有一种方法可以在不使用for循环的情况下复制相同的结果?比如ggmap会怎么做?我这样问是因为当有很多迭代时,for循环通常非常慢。再次非常感谢