R 如何编写包含';对于';在中使用不同函数的循环?将此函数应用于向量?
我想我误解了“for”循环和函数如何工作的一些基本部分。此功能:R 如何编写包含';对于';在中使用不同函数的循环?将此函数应用于向量?,r,function,for-loop,if-statement,vector,R,Function,For Loop,If Statement,Vector,我想我误解了“for”循环和函数如何工作的一些基本部分。此功能: even.odd <- function(x) { if (x != round(x)) { y <- NA } else if (x %% 2 == 0) { y <- "even" } else { y <- "odd" } return(y) } even.odd.vec <- function(num.vec) { #write your c
even.odd <- function(x) {
if (x != round(x)) {
y <- NA
} else if (x %% 2 == 0) {
y <- "even"
} else {
y <- "odd"
}
return(y)
}
even.odd.vec <- function(num.vec) {
#write your code here
}
偶数.odd在不使用for
循环的情况下,肯定有办法做到这一点,但由于您希望在本练习中明确使用for
循环,我们可以使用适用于单个数字的偶数.odd
函数,并创建一个新函数,该函数使用for
循环,并为每个数字调用偶数.odd
函数元素单独存在
even.odd.vec <- function(x) {
result <- character(length = length(x))
for (i in seq_along(x)) {
result[i] <- even.odd(x[i])
}
return(result)
}
非常感谢。如果我理解正确的话,代码中引入结果[I]和偶数.odd(x[I])的那部分就是最终将偶数.odd函数分别应用于每个元素并应用于使用character函数创建的结果向量的部分?是的。因此,x
是我们传递给函数的向量x[i]
是其中的一个元素。所以对于第一个值x[1]
是test1[1]
。
#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.vec <- function(x) {
result <- character(length = length(x))
for (i in seq_along(x)) {
result[i] <- even.odd(x[i])
}
return(result)
}
even.odd.vec(test1)
#[1] "odd" "even" "even" "odd"
even.odd.vec(test2)
#[1] "even" NA NA