считая большее значение - PullRequest
0 голосов
/ 26 апреля 2018

Абсолютно новичок в R, и я пытаюсь подсчитать, сколько чисел в списке больше, чем то, что было раньше.

Это то, что я имею до сих пор,

count <- 0
number <- function(value) {
for (i in 1:length(value)) 
  { if(value[i+1] > value[i])
  {count <- count + 1}
  }
}
x <- c(1,2,1,1,3,5)
number(x)

Вывод должен быть 3 на основе списка.

Любая помощь или совет будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Базовая альтернатива R будет diff

sum(diff(x) > 0)
#[1] 3

Или мы также можем исключить первое и последнее значения и сравнить их.

sum(x[-1] > x[-length(x)])
#[1] 3

, где

x[-1]
#[1] 2 1 1 3 5
x[-length(x)]
#[1] 1 2 1 1 3
0 голосов
/ 26 апреля 2018

Вы можете lag ваш вектор и посчитать, во сколько раз ваш начальный вектор больше, чем ваш лаговый вектор

library(dplyr)
sum(x>lag(x), na.rm = TRUE)

В деталях, lag(x) делает:

> lag(x)
[1] NA  1  2  1  1  3

так x > lag(x) делает

> x>lag(x)
[1]  NA  TRUE FALSE FALSE  TRUE  TRUE

Сумма вышеуказанного равна 3.

...