#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)
качестве индекса. Вы исправили это. Пожалуйста, объясните.