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循环通常非常慢。再次非常感谢