【发布时间】:2021-12-24 08:25:00
【问题描述】:
我的任务是创建一个函数来检查自然数是否为素数,而不使用 for() 函数。我通过定义一个“集合”并使用 all() 函数解决了这个问题。
prime <- function(nat){
N <- 1:(nat-1)
N <- N[-c(1,nat)]
if(!isTRUE(all(nat%%N != 0))){
return(paste(nat,"is a prime number."))
}else{
return(paste(nat,"is not a prime number."))
}
}
#Assuming the input is actually a natural number. Error response is not my issue.
现在,我的问题是,如果 all() 函数实际上不是“变相”的 for()。它基本上完成了与 for() 函数相同的任务。为我的“集合”的每个成员检查 nat%%N != 0 的逻辑语句。我不是专家,但在我看来 all() 函数是用于逻辑值的 for() 函数,因此它们的内部工作原理必须非常相似。
如果有人可以澄清 all() 函数是否与 for() 函数的工作方式相同,我将不胜感激。 all() 可以认为是 for() 函数吗?
【问题讨论】:
-
这是不正确的。就像说
sum(1:10)是变相的for 循环一样。只是为了让您知道,R 是一种向量化语言,这意味着大多数函数都使用向量。这并不意味着它们是变相的循环。这只是意味着您不必编写 for 循环,因为该函数包含一个。所以 NOall不是 for 循环