R 如何编写包含';对于';在中使用不同函数的循环?将此函数应用于向量?

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

我想我误解了“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 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