Skip to contents

For a given dataset, find the k nearest neighbors for each object based on their spatial locations, with the option of handling ties.

Usage

findSpatialKNN(
  location,
  k,
  keep_ties = TRUE,
  useMedianDist = FALSE,
  BNPARAM = NULL
)

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.

Value

A list of indices.

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
#>