For a given dataset, find the k
nearest neighbors for each
object based on their spatial locations, with the option of handling ties.
Arguments
- location
A numeric data matrix containing location information, where rows are points and columns are location dimensions.
- k
The number of nearest neighbors to look at.
- keep_ties
A Boolean indicating if ties are counted once or not. If TRUE, neighbors of the same distances will be included even if it means returning more than
k
neighbors.- useMedianDist
Use the median distance of the k nearest neighbor as maximum distance to be included. Ignored if
keep_ties=FALSE
.- BNPARAM
BNPARAM object passed to
findKNN
specifying the kNN approximation method to use. Defaults to exact for small datasets, and Annoy for larger ones.
Examples
data(sp_toys)
data <- sp_toys
findSpatialKNN(data[,c("x", "y")], k=6)
#> [[1]]
#> [1] 2 16 17 31 32 3
#>
#> [[2]]
#> [1] 1 16 17 3 18 32
#>
#> [[3]]
#> [1] 4 18 17 2 19 16 33
#>
#> [[4]]
#> [1] 3 5 18 19 17 20 34
#>
#> [[5]]
#> [1] 4 19 20 6 18 35
#>
#> [[6]]
#> [1] 7 20 21 5 22 36
#>
#> [[7]]
#> [1] 6 8 21 22 20 23 37
#>
#> [[8]]
#> [1] 7 9 22 23 21 24 38
#>
#> [[9]]
#> [1] 8 10 23 24 22 25
#>
#> [[10]]
#> [1] 9 24 25 11 23 26 40
#>
#> [[11]]
#> [1] 26 25 10 12 24 27 41
#>
#> [[12]]
#> [1] 13 27 26 11 28 42
#>
#> [[13]]
#> [1] 12 27 28 14 26 29 43
#>
#> [[14]]
#> [1] 15 29 28 13 30 27 44
#>
#> [[15]]
#> [1] 14 29 30 28 45 13 44
#>
#> [[16]]
#> [1] 17 2 32 1 31 3 33 46
#>
#> [[17]]
#> [1] 16 2 32 3 33 18
#>
#> [[18]]
#> [1] 19 3 4 33 34 17
#>
#> [[19]]
#> [1] 18 4 5 34 35 20
#>
#> [[20]]
#> [1] 5 6 35 36 19 21
#>
#> [[21]]
#> [1] 7 22 37 6 36 20
#>
#> [[22]]
#> [1] 8 21 23 38 7 37
#>
#> [[23]]
#> [1] 9 22 24 39 8 38
#>
#> [[24]]
#> [1] 25 10 23 40 9 39
#>
#> [[25]]
#> [1] 24 10 40 11 41 26
#>
#> [[26]]
#> [1] 11 41 12 42 25 27
#>
#> [[27]]
#> [1] 28 12 13 42 43 26
#>
#> [[28]]
#> [1] 27 13 43 14 44 29
#>
#> [[29]]
#> [1] 30 14 15 44 45 28
#>
#> [[30]]
#> [1] 29 15 45 14 44 60
#>
#> [[31]]
#> [1] 32 16 46 17 47 1 61
#>
#> [[32]]
#> [1] 16 17 31 46 47 33
#>
#> [[33]]
#> [1] 34 18 48 17 47 32
#>
#> [[34]]
#> [1] 33 35 18 19 48 49
#>
#> [[35]]
#> [1] 34 19 49 20 50 36
#>
#> [[36]]
#> [1] 37 20 21 50 51 35
#>
#> [[37]]
#> [1] 21 36 38 51 22 52
#>
#> [[38]]
#> [1] 22 37 39 52 23 53
#>
#> [[39]]
#> [1] 23 38 40 53 24 54
#>
#> [[40]]
#> [1] 24 25 39 54 55 41
#>
#> [[41]]
#> [1] 26 56 25 55 40 42
#>
#> [[42]]
#> [1] 43 27 57 26 56 41
#>
#> [[43]]
#> [1] 42 27 28 57 58 44
#>
#> [[44]]
#> [1] 45 29 59 28 58 43
#>
#> [[45]]
#> [1] 44 29 30 59 60 15 28 58 75
#>
#> [[46]]
#> [1] 47 32 62 31 61 16 33 63 76
#>
#> [[47]]
#> [1] 46 32 62 33 63 48
#>
#> [[48]]
#> [1] 49 33 34 63 64 47
#>
#> [[49]]
#> [1] 48 34 35 64 65 50
#>
#> [[50]]
#> [1] 35 36 65 66 49 51
#>
#> [[51]]
#> [1] 37 52 67 36 66 50
#>
#> [[52]]
#> [1] 38 51 53 68 37 67
#>
#> [[53]]
#> [1] 39 52 54 69 38 68
#>
#> [[54]]
#> [1] 55 40 53 70 39 69
#>
#> [[55]]
#> [1] 54 40 70 41 71 56
#>
#> [[56]]
#> [1] 41 71 42 72 55 57
#>
#> [[57]]
#> [1] 58 42 43 72 73 56
#>
#> [[58]]
#> [1] 57 43 73 44 74 59
#>
#> [[59]]
#> [1] 60 44 45 74 75 58
#>
#> [[60]]
#> [1] 59 45 75 44 74 30 90
#>
#> [[61]]
#> [1] 62 46 76 47 77 31 91
#>
#> [[62]]
#> [1] 46 47 61 76 77 63
#>
#> [[63]]
#> [1] 64 48 78 47 77 62
#>
#> [[64]]
#> [1] 63 65 48 49 78 79
#>
#> [[65]]
#> [1] 64 49 79 50 80 66
#>
#> [[66]]
#> [1] 67 50 51 80 81 65
#>
#> [[67]]
#> [1] 51 66 68 81 52 82
#>
#> [[68]]
#> [1] 52 67 69 82 53 83
#>
#> [[69]]
#> [1] 53 68 70 83 54 84
#>
#> [[70]]
#> [1] 54 55 69 84 85 71
#>
#> [[71]]
#> [1] 56 86 55 85 70 72
#>
#> [[72]]
#> [1] 73 57 87 56 86 71
#>
#> [[73]]
#> [1] 72 57 58 87 88 74
#>
#> [[74]]
#> [1] 75 59 89 58 88 73
#>
#> [[75]]
#> [1] 74 59 60 89 90 45 58 88 105
#>
#> [[76]]
#> [1] 77 62 92 61 91 46 63 93 106
#>
#> [[77]]
#> [1] 76 62 92 63 93 78
#>
#> [[78]]
#> [1] 79 63 64 93 94 77
#>
#> [[79]]
#> [1] 78 64 65 94 95 80
#>
#> [[80]]
#> [1] 65 66 95 96 79 81
#>
#> [[81]]
#> [1] 67 82 97 66 96 80
#>
#> [[82]]
#> [1] 68 81 83 98 67 97
#>
#> [[83]]
#> [1] 69 82 84 99 68 98
#>
#> [[84]]
#> [1] 85 70 83 100 69 99
#>
#> [[85]]
#> [1] 84 70 100 71 101 86
#>
#> [[86]]
#> [1] 71 101 72 102 85 87
#>
#> [[87]]
#> [1] 88 72 73 102 103 86
#>
#> [[88]]
#> [1] 87 73 103 74 104 89
#>
#> [[89]]
#> [1] 90 74 75 104 105 88
#>
#> [[90]]
#> [1] 89 75 105 74 104 60 120
#>
#> [[91]]
#> [1] 92 76 106 77 107 61 121
#>
#> [[92]]
#> [1] 76 77 91 106 107 93
#>
#> [[93]]
#> [1] 94 78 108 77 107 92
#>
#> [[94]]
#> [1] 93 95 78 79 108 109
#>
#> [[95]]
#> [1] 94 79 109 80 110 96
#>
#> [[96]]
#> [1] 97 80 81 110 111 95
#>
#> [[97]]
#> [1] 81 96 98 111 82 112
#>
#> [[98]]
#> [1] 82 97 99 112 83 113
#>
#> [[99]]
#> [1] 83 98 100 113 84 114
#>
#> [[100]]
#> [1] 84 85 99 114 115 101
#>
#> [[101]]
#> [1] 86 116 85 115 100 102
#>
#> [[102]]
#> [1] 103 87 117 86 116 101
#>
#> [[103]]
#> [1] 102 87 88 117 118 104
#>
#> [[104]]
#> [1] 105 89 119 88 118 103
#>
#> [[105]]
#> [1] 104 89 90 119 120 75 88 118 135
#>
#> [[106]]
#> [1] 107 92 122 91 121 76 93 123 136
#>
#> [[107]]
#> [1] 106 92 122 93 123 108
#>
#> [[108]]
#> [1] 109 93 94 123 124 107
#>
#> [[109]]
#> [1] 108 94 95 124 125 110
#>
#> [[110]]
#> [1] 95 96 125 126 109 111
#>
#> [[111]]
#> [1] 97 112 127 96 126 110
#>
#> [[112]]
#> [1] 98 111 113 128 97 127
#>
#> [[113]]
#> [1] 99 112 114 129 98 128
#>
#> [[114]]
#> [1] 115 100 113 130 99 129
#>
#> [[115]]
#> [1] 114 100 130 101 131 116
#>
#> [[116]]
#> [1] 101 131 102 132 115 117
#>
#> [[117]]
#> [1] 118 102 103 132 133 116
#>
#> [[118]]
#> [1] 117 103 133 104 134 119
#>
#> [[119]]
#> [1] 120 104 105 134 135 118
#>
#> [[120]]
#> [1] 119 105 135 104 134 90 150
#>
#> [[121]]
#> [1] 122 106 136 107 137 91 151
#>
#> [[122]]
#> [1] 106 107 121 136 137 123
#>
#> [[123]]
#> [1] 124 108 138 107 137 122
#>
#> [[124]]
#> [1] 123 125 108 109 138 139
#>
#> [[125]]
#> [1] 124 109 139 110 140 126
#>
#> [[126]]
#> [1] 127 110 111 140 141 125
#>
#> [[127]]
#> [1] 111 126 128 141 112 142
#>
#> [[128]]
#> [1] 112 127 129 142 113 143
#>
#> [[129]]
#> [1] 113 128 130 143 114 144
#>
#> [[130]]
#> [1] 114 115 129 144 145 131
#>
#> [[131]]
#> [1] 116 146 115 145 130 132
#>
#> [[132]]
#> [1] 133 117 147 116 146 131
#>
#> [[133]]
#> [1] 132 117 118 147 148 134
#>
#> [[134]]
#> [1] 135 119 149 118 148 133
#>
#> [[135]]
#> [1] 134 119 120 149 150 105 118 148 165
#>
#> [[136]]
#> [1] 137 122 152 121 151 106 123 153 166
#>
#> [[137]]
#> [1] 136 122 152 123 153 138
#>
#> [[138]]
#> [1] 139 123 124 153 154 137
#>
#> [[139]]
#> [1] 138 124 125 154 155 140
#>
#> [[140]]
#> [1] 125 126 155 156 139 141
#>
#> [[141]]
#> [1] 127 142 157 126 156 140
#>
#> [[142]]
#> [1] 128 141 143 158 127 157
#>
#> [[143]]
#> [1] 129 142 144 159 128 158
#>
#> [[144]]
#> [1] 145 130 143 160 129 159
#>
#> [[145]]
#> [1] 144 130 160 131 161 146
#>
#> [[146]]
#> [1] 131 161 132 162 145 147
#>
#> [[147]]
#> [1] 148 132 133 162 163 146
#>
#> [[148]]
#> [1] 147 133 163 134 164 149
#>
#> [[149]]
#> [1] 150 134 135 164 165 148
#>
#> [[150]]
#> [1] 149 135 165 134 164 120 180
#>
#> [[151]]
#> [1] 152 136 166 137 167 121 181
#>
#> [[152]]
#> [1] 136 137 151 166 167 153
#>
#> [[153]]
#> [1] 154 138 168 137 167 152
#>
#> [[154]]
#> [1] 153 155 138 139 168 169
#>
#> [[155]]
#> [1] 154 139 169 140 170 156
#>
#> [[156]]
#> [1] 157 140 141 170 171 155
#>
#> [[157]]
#> [1] 141 156 158 171 142 172
#>
#> [[158]]
#> [1] 142 157 159 172 143 173
#>
#> [[159]]
#> [1] 143 158 160 173 144 174
#>
#> [[160]]
#> [1] 144 145 159 174 175 161
#>
#> [[161]]
#> [1] 146 176 145 175 160 162
#>
#> [[162]]
#> [1] 163 147 177 146 176 161
#>
#> [[163]]
#> [1] 162 147 148 177 178 164
#>
#> [[164]]
#> [1] 165 149 179 148 178 163
#>
#> [[165]]
#> [1] 164 149 150 179 180 135 148 178 195
#>
#> [[166]]
#> [1] 167 152 182 151 181 136 153 183 196
#>
#> [[167]]
#> [1] 166 152 182 153 183 168
#>
#> [[168]]
#> [1] 169 153 154 183 184 167
#>
#> [[169]]
#> [1] 168 154 155 184 185 170
#>
#> [[170]]
#> [1] 155 156 185 186 169 171
#>
#> [[171]]
#> [1] 157 172 187 156 186 170
#>
#> [[172]]
#> [1] 158 171 173 188 157 187
#>
#> [[173]]
#> [1] 159 172 174 189 158 188
#>
#> [[174]]
#> [1] 175 160 173 190 159 189
#>
#> [[175]]
#> [1] 174 160 190 161 191 176
#>
#> [[176]]
#> [1] 161 191 162 192 175 177
#>
#> [[177]]
#> [1] 178 162 163 192 193 176
#>
#> [[178]]
#> [1] 177 163 193 164 194 179
#>
#> [[179]]
#> [1] 180 164 165 194 195 178
#>
#> [[180]]
#> [1] 179 165 195 164 194 150 210
#>
#> [[181]]
#> [1] 182 166 196 167 197 151 211
#>
#> [[182]]
#> [1] 166 167 181 196 197 183
#>
#> [[183]]
#> [1] 184 168 198 167 197 182
#>
#> [[184]]
#> [1] 183 185 168 169 198 199
#>
#> [[185]]
#> [1] 184 169 199 170 200 186
#>
#> [[186]]
#> [1] 187 170 171 200 201 185
#>
#> [[187]]
#> [1] 171 186 188 201 172 202
#>
#> [[188]]
#> [1] 172 187 189 202 173 203
#>
#> [[189]]
#> [1] 173 188 190 203 174 204
#>
#> [[190]]
#> [1] 174 175 189 204 205 191
#>
#> [[191]]
#> [1] 176 206 175 205 190 192
#>
#> [[192]]
#> [1] 193 177 207 176 206 191
#>
#> [[193]]
#> [1] 192 177 178 207 208 194
#>
#> [[194]]
#> [1] 195 179 209 178 208 193
#>
#> [[195]]
#> [1] 194 179 180 209 210 165 178 208 225
#>
#> [[196]]
#> [1] 197 182 212 181 211 166 183 213 226
#>
#> [[197]]
#> [1] 196 182 212 183 213 198
#>
#> [[198]]
#> [1] 199 183 184 213 214 197
#>
#> [[199]]
#> [1] 198 184 185 214 215 200
#>
#> [[200]]
#> [1] 185 186 215 216 199 201
#>
#> [[201]]
#> [1] 187 202 217 186 216 200
#>
#> [[202]]
#> [1] 188 201 203 218 187 217
#>
#> [[203]]
#> [1] 189 202 204 219 188 218
#>
#> [[204]]
#> [1] 205 190 203 220 189 219
#>
#> [[205]]
#> [1] 204 190 220 191 221 206
#>
#> [[206]]
#> [1] 191 221 192 222 205 207
#>
#> [[207]]
#> [1] 208 192 193 222 223 206
#>
#> [[208]]
#> [1] 207 193 223 194 224 209
#>
#> [[209]]
#> [1] 210 194 195 224 225 208
#>
#> [[210]]
#> [1] 209 195 225 194 224 180 240
#>
#> [[211]]
#> [1] 212 196 226 197 227 181
#>
#> [[212]]
#> [1] 196 197 211 226 227 213
#>
#> [[213]]
#> [1] 214 198 228 197 227 212
#>
#> [[214]]
#> [1] 213 215 198 199 228 229
#>
#> [[215]]
#> [1] 214 199 229 200 230 216
#>
#> [[216]]
#> [1] 217 200 201 230 231 215
#>
#> [[217]]
#> [1] 201 216 218 231 202 232
#>
#> [[218]]
#> [1] 202 217 219 232 203 233
#>
#> [[219]]
#> [1] 203 218 220 233 204 234
#>
#> [[220]]
#> [1] 204 205 219 234 235 221
#>
#> [[221]]
#> [1] 206 236 205 235 220 222
#>
#> [[222]]
#> [1] 223 207 237 206 236 221
#>
#> [[223]]
#> [1] 222 207 208 237 238 224
#>
#> [[224]]
#> [1] 225 209 239 208 238 223
#>
#> [[225]]
#> [1] 224 209 210 239 240 195 208 238
#>
#> [[226]]
#> [1] 227 212 211 196 213 197 228
#>
#> [[227]]
#> [1] 226 212 213 228 211 197 214
#>
#> [[228]]
#> [1] 229 213 214 227 215 198 212
#>
#> [[229]]
#> [1] 228 214 215 230 213 199
#>
#> [[230]]
#> [1] 215 216 229 231 200 214 217
#>
#> [[231]]
#> [1] 217 232 216 230 218 201
#>
#> [[232]]
#> [1] 218 231 233 217 219 202 216
#>
#> [[233]]
#> [1] 219 232 234 218 220 203 217
#>
#> [[234]]
#> [1] 235 220 233 219 204 218 221
#>
#> [[235]]
#> [1] 234 220 221 236 219 205
#>
#> [[236]]
#> [1] 221 222 235 237 206 220 223
#>
#> [[237]]
#> [1] 238 222 223 236 207 221 224
#>
#> [[238]]
#> [1] 237 223 224 239 222 208 225
#>
#> [[239]]
#> [1] 240 224 225 238 209 223
#>
#> [[240]]
#> [1] 239 225 224 210 209 238
#>