Я думаю, что неправильно понимаю некоторую фундаментальную часть того, как работают циклы и функции for. Эта функция:
even.odd <- function(x) {
if (x != round(x)) {
y <- NA
} else if (x %% 2 == 0) {
y <- "even"
} else {
y <- "odd"
}
return(y)
}
работает отлично, возвращая "четные", "нечетные" или "NA" с заданным числом. Однако мне даны два вектора:
test1 <- c(-1, 0, 2, 5)
test2 <- c(0, 2.7, 9.1)
и мне нужно создать 'for' l oop, содержащую функцию even.odd, и протестировать ее с использованием этих векторов. Я прочитал все рекомендуемые примечания к чтению / лекции и часами безуспешно пытался получить желаемый результат, используя пустые векторы, индексируя новые объекты, просто помещая even.odd (num.ve c). Я не уверен, где я ошибся.
Нам дали отправную точку для новой функции:
even.odd.vec <- function(num.vec) {
#write your code here
}
До сих пор я придумал:
#creating intermediate function
intermediate <- function(num.vec) {
if (even.odd(num.vec) == "odd") {
return("odd")
} else if(even.odd(num.vec) == "even") {
return("even")
} else ifelse(is.na(num.vec), NA, "False")
}
#creating new desired function
even.odd.vec <- function(num.vec) {
for (i in seq_along(num.vec)) {
intermediate(num.vec)
print(intermediate(num.vec))
}
}
Промежуточная функция была В результате я столкнулся с различными ошибками при попытке создать более простое тело для even.odd.ve c. Но теперь, когда я пытаюсь использовать even.odd.ve c с одним из тестовых векторов, я получаю эту ошибку:
условие имеет длину> 1, и будет использоваться только первый элемент. имеет длину> 1, и будет использоваться только первый элемент; условие будет иметь длину> 1, будет использоваться только первый элемент; условие имеет длину> 1, и будет использоваться только первый элемент
Я очень застрял в этой точке и хотел узнать, как сделать что-то подобное этой работе. Мне было очень весело работать над этим, но я думаю, что копаюсь в яме и / или делаю вещи намного более сложными, чем необходимо. Любая помощь невероятно ценится, поскольку моего профессора нет в городе, а ТА кажется перегруженным.