我下面的代码段写在 R 上,以删除vector
中的每个元素,该元素是for each
中x vector
x的倍数。
函数运行时,循环仅适用于向量中的第一个元素,即2,并且不验证其余元素,例如3、4、5、6。我该如何解决?
my_function <- function(n){
X <- 2:n
i <- 2
for (x in X){
while (x*i <= n){
a <- match(x*i,X)
X <- X[-(a)]
i <- i+1
}
print(X)
}
}
答案 0 :(得分:0)
您可以使用以下内容:
my_function <- function(n){
#Create a sequence from 2 to n
X <- 2:n
#For every value in X
for(i in X) {
#Create a sequence from i + i to n with steps of i
vals = seq(min(i + i, n), n, i)
#Check which values in X are multiple
inds <- X %in% vals
#If any value is present
if(any(inds))
#Remove it from X
X <- X[!inds]
}
#Return remaining X
return(X)
}
my_function(6)
#[1] 2 3 5
my_function(12)
#[1] 2 3 5 7 11