У меня есть следующий код R:
simul <- function() {
x <- sample(c(-1, 1), n, replace = TRUE)
s <- cumsum(c(0, x))
}
(tmp = simul())
(1:(n - 1))[tmp[1:(n - 1)] * tmp[3:(n + 1)] < 0]
Я понимаю, что 1:(n - 1)
генерирует вектор последовательности от 1 до n - 1 для каждого n, что означает, что таких векторов потенциально много (еслип> 2). Я также знаю, что tmp[1:(n - 1)] * tmp[3:(n + 1)] < 0
возвращает значение ИСТИНА / ЛОЖЬ. Следовательно, кажется, что для каждого вектора 1:(n - 1)
, tmp[1:(n - 1)] * tmp[3:(n + 1)] < 0
генерирует логическое значение. Но это означает, что (1:(n - 1))[tmp[1:(n - 1)] * tmp[3:(n + 1)] < 0]
индексирует каждый вектор по логическому значению, что для меня не имеет смысла. Кроме того, кажется, что в конце этого процесса (1:(n - 1))[tmp[1:(n - 1)] * tmp[3:(n + 1)] < 0]
возвращает вектор целых чисел, но что?
Я был бы очень признателен, если бы люди могли потратить время на разъяснение этого.