首页 > 解决方案 > R:使用控制结构“for”创建一个函数

问题描述

我想创建一个函数,它有一个向量 (v) 和一个数字 (n),分析“v”的任何数字是否可以被“n”整除,如果是,则该函数将具有结果真的'。我怎么能使用控制结构'for'呢?

到目前为止,我已经使用“while”运算符解决了这个问题:

function.while <- function(v, n){ 
while (n %% v == 0)
 return (TRUE)
}

但我无法完全理解“for”的逻辑。

谢谢。

标签: r

解决方案


您可以使用for如下循环:

function.for <- function(v, n){ 
  result <- logical(length(v))
  for(i in seq_along(v)) {
    result[i] <- v[i] %% n == 0
  }
  return(result)
}

function.for(1:10, 2)
#[1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE

但是,这是矢量化操作,您不需要for循环。

function.vectorized <- function(v, n){ 
  v %% n == 0
}
function.vectorized(1:10, 2)

如果要检查any值是否存在。

function.vectorized <- function(v, n){ 
  any(v %% n == 0)
}

推荐阅读