Я создал функцию, которая по существу создает вектор двоичных значений 1000. Я смог подсчитать самую длинную полосу последовательных 1s, используя rle
.Как найти строку в векторе в r?
Мне было интересно, как найти конкретный вектор (скажем c(1,0,0,1)
) в этом большем векторном размере? Я хотел бы, чтобы он возвращал количество вхождений этого вектора. Так c(1,0,0,1,1,0,0,1)
должен возвращать 2, в то время как c(1,0,0,0,1)
должен возвращать 0.
Большинство решений, которые я нашел только найти, происходит ли последовательность вообще и возвращать TRUE
или FALSE
, или они дают результаты для отдельных значений, а не конкретный вектор, .
Вот мой код до сих пор:
# creates a function where a 1000 people choose either up or down.
updown <- function(){
n = 1000
X = rep(0,n)
Y = rbinom(n, 1, 1/2)
X[Y == 1] = "up"
X[Y == 0] = "down"
#calculate the length of the longest streak of ups:
Y1 <- rle(Y)
streaks <- Y1$lengths[Y1$values == c(1)]
max(streaks, na.rm=TRUE)
}
# repeat this process n times to find the average outcome.
longeststring <- replicate(1000, updown())
longeststring(p_vals)
@ Фэн Тянь, на самом деле нам нужно использовать прогнозные утверждения, обновлять код, сообщать мне, если он не работает. –
Я понял. Ты прав. –