我有数据,我想对这些数据运行一个复杂的函数。该函数的思想是,如果当前元素的值为>
特定值,则所有即将到来的元素的值都需要设置为0
。例如,
假设我的数据是x <- 1:16
然后,我想从发现每个值的平方根1
来16
,如果我们得到一个平方根大于3
,则循环必须停止所有的未来值设置为0
。
例如,的平方根9
是3
。因此,该函数必须在此处停止并将元素的所有值从9
到 设置16
为0
。
这是我的尝试:
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] 删除。
我来说两句