Как исправить ошибки в этой функции

#r

Вопрос:

Напишите функцию с именем countConsecutivePairs, которая принимает числовой вектор в качестве аргумента и подсчитывает пары последовательных элементов, разница между которыми меньше 2.

Вы должны остановить выполнение и распечатать соответствующее сообщение об ошибке, если аргумент не числовой.

Вот мой код

 countConsecutivepairs=function(z){  if(!(is.vector(z)))  stop("Error"  if(class(z)!="numeric")  stop("Error")    for(i in z) {  if(abs(z[i]-z[i 1])!=2){  next  }  print(c(z[i],z[i 1])   } }  

Я получаю кучу ошибок, когда делаю это. И я не знаю, как это исправить.

Ответ №1:

Вы пропустили несколько ) в своем коде.

И благодаря @Jan, поскольку @Ace123 использует z[i] s в коде, а также хочет проверять последовательные элементы, мы должны называть эти элементы i по длине z .

 countConsecutivepairslt;- function(z){  if(!(is.vector(z))){  stop("Error")  }   if(class(z)!="numeric"){  stop("Error")  }  for(i in 1:(length(z)-1)) {  if(abs(z[i]-z[i 1])!=2){  next  }      print(c(z[i],z[i 1]))      }   } countConsecutivepairs(c(1,2,3,5,7)) [1] 3 5 [1] 5 7  

Комментарии:

1. Спасибо вам за это! Это мне очень помогло.

2. @Park: вы также исправили ошибку индексирования. PO i , используемый в for(i in z) качестве индекса. Вы исправили это. Пожалуйста, объясните.