如何根据以前的值将当前级别的值设置为零

玛丽亚姆

我有数据,我想对这些数据运行一个复杂的函数。该函数的思想是,如果当前元素的值为>特定值,则所有即将到来的元素的值都需要设置为0例如,

假设我的数据是x <- 1:16然后,我想从发现每个值的平方根116,如果我们得到一个平方根大于3,则循环必须停止所有的未来值设置为0

例如,的平方根93因此,该函数必须在此处停止并将元素的所有值从9到 设置160

这是我的尝试:

xy <- list()
for (i in seq_along(x)){
  xy[[i]] <- myfunc(x[i])
  if (xy[[i]] > 3 ) 
    break
  xy[[i]] <- 0
}

所以我希望这些值是这样的:

     > xy
[[1]]
[1] 1

[[2]]
[1] 1.4

[[3]]
[1] 1.7

[[4]]
[1] 2

[[5]]
[1] 2.2

[[6]]
[1] 2.4

[[7]]
[1] 2.6

[[8]]
[1] 2.8

[[9]]
[1] 0

[[10]]
[1] 0
 
[[11]]
[1] 0

[[10]]
[1] 0

[[12]]
[1] 0

[[13]]
[1] 0

 [[14]]
[1] 0

[[15]]
[1] 0

[[16]]
[1] 0
阿努希拉万

为此,您可以使用它:

x <- 1:16
out <- vector("list", length = length(x))
for(i in seq_along(x)) {
   if(sqrt(x[i]) < 3) {
     out[[i]] <- sqrt(x[i])
   } else {
     out[i:length(x)] <- 0
   }
}
out
[[1]]
[1] 1

[[2]]
[1] 1.414214

[[3]]
[1] 1.732051

[[4]]
[1] 2

[[5]]
[1] 2.236068

[[6]]
[1] 2.44949

[[7]]
[1] 2.645751

[[8]]
[1] 2.828427

[[9]]
[1] 0

[[10]]
[1] 0

[[11]]
[1] 0

[[12]]
[1] 0

[[13]]
[1] 0

[[14]]
[1] 0

[[15]]
[1] 0

[[16]]
[1] 0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章