Что это?
class(AirPassengers)
## [1] "ts"
Посмотрите на него:
AirPassengers
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
Индексация его таким образом изменяет поведение объекта:
AirPassengers[-1]
## [1] 118 132 129 121 135 148 148 136 119 104 118 115 126 141 135 125 149
## [18] 170 170 158 133 114 140 145 150 178 163 172 178 199 199 184 162 146
## [35] 166 171 180 193 181 183 218 230 242 209 191 172 194 196 196 236 235
## [52] 229 243 264 272 237 211 180 201 204 188 235 227 234 264 302 293 259
## [69] 229 203 229 242 233 267 269 270 315 364 347 312 274 237 278 284 277
## [86] 317 313 318 374 413 405 355 306 271 306 315 301 356 348 355 422 465
## [103] 467 404 347 305 336 340 318 362 348 363 435 491 505 404 359 310 337
## [120] 360 342 406 396 420 472 548 559 463 407 362 405 417 391 419 461 472
## [137] 535 622 606 508 461 390 432
class(AirPassengers[-1])
## [1] "numeric"
Как вы можете видеть, он сделал временной ряд A числовой вектор и удаленный первый элемент:
length(AirPassengers)
## [1] 144
Это удаляет последний элемент:
AirPassengers[-144]
## [1] 112 118 132 129 121 135 148 148 136 119 104 118 115 126 141 135 125
## [18] 149 170 170 158 133 114 140 145 150 178 163 172 178 199 199 184 162
## [35] 146 166 171 180 193 181 183 218 230 242 209 191 172 194 196 196 236
## [52] 235 229 243 264 272 237 211 180 201 204 188 235 227 234 264 302 293
## [69] 259 229 203 229 242 233 267 269 270 315 364 347 312 274 237 278 284
## [86] 277 317 313 318 374 413 405 355 306 271 306 315 301 356 348 355 422
## [103] 465 467 404 347 305 336 340 318 362 348 363 435 491 505 404 359 310
## [120] 337 360 342 406 396 420 472 548 559 463 407 362 405 417 391 419 461
## [137] 472 535 622 606 508 461 390
R логические операторы векторную, так
AirPassengers[-1] > AirPassengers[-144]
## [1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE
## [12] FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
## [23] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE
## [34] FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
## [45] FALSE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE
## [56] FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE TRUE
## [67] FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
## [78] TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE
## [89] TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE
## [100] TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
## [111] FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE FALSE
## [122] TRUE FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE
## [133] FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE
создает логический вектор сравнения каждой пары друг к другу.
AirPassengers[-1][AirPassengers[-1] > AirPassengers[-144]]
## [1] 118 132 135 148 118 126 141 149 170 140 145 150 178 172 178 199 166
## [18] 171 180 193 183 218 230 242 194 196 236 243 264 272 201 204 235 234
## [35] 264 302 229 242 267 269 270 315 364 278 284 317 318 374 413 306 315
## [52] 356 355 422 465 467 336 340 362 363 435 491 505 337 360 406 420 472
## [69] 548 559 405 417 419 461 472 535 622 432
Это создает числовой вектор временных рядов без первого элемента и использует тот факт, что вы можете логически включать/исключать векторные компоненты.
Простенький 'AirPassengers [c (FALSE, diff (AirPassengers)> 0)]'. Попробуйте запустить код по частям, чтобы понять все. –
FWIW вы _almost never_ хотите сделать это поэтапное создание вектора с помощью цикла 'for' в R. Это очень быстро происходит очень быстро :-) Одна из самых трудных вещей для людей, начинающих работать с R, чтобы справиться (esp, если они придут от чисто процедурных языков или унаследованных языков, таких как python) - концепция векторизованных операций. Вы должны позволить R переписать ваши нейроны, чтобы в полной мере оценить силу векторизованных операций. – hrbrmstr