gpt4 book ai didi

r - 用于检查空范围的循环

转载 作者:行者123 更新时间:2023-12-04 13:20:17 24 4
gpt4 key购买 nike

在处理数学中的递归方程时,通常会编写在某个范围内成立的方程 k = 1,...,d隐含的约定如果 d < 1那么方程组被认为是空的。在 R 编程时我希望能够写 for以与数学语句(例如,递归方程)相同的方式循环,因此它将上限低于下限的范围解释为空。这将确保算法的语法模仿它所基于的数学语句的语法。

不幸的是,R不解释 for以这种方式循环,因此当您以模仿底层数学的方式编写循环时,这通常会导致错误。例如,考虑一个简单的函数,我们在其中创建长度为 n 的零向量。然后更改第一个 d使用循环遍历 k = 1,...,d 范围内的元素的值.如果我们输入 d < 1在这个函数中,我们希望函数能够识别循环是空的,这样我们就可以得到一个全为零的向量。但是,使用标准 for循环我们得到以下内容:

#Define a function using a recursive pattern
MY_FUNC <- function(n,d) {
OBJECT <- rep(0, n);
for (k in 1:d) { OBJECT[k] <- 1 }
OBJECT }

#Generate some values of the function
MY_FUNC(10,4);
[1] 1 1 1 1 0 0 0 0 0 0

MY_FUNC(10,1);
[1] 1 0 0 0 0 0 0 0 0 0

MY_FUNC(10,0);
[1] 1 0 0 0 0 0 0 0 0 0
#Not what we wanted

MY_FUNC(10,-2);
[1] 1 1 1 1 1 1 1 1 1 1
#Not what we wanted

我的问题:R中有什么函数吗?像 for 一样执行循环循环,但如果上限低于下限,则将循环解释为空?如果没有现成的功能,有没有办法编程R以这种方式读取循环?

请注意:我寻求的答案不是简单地以删除循环的方式重写此示例函数。我知道这可以在这种特定情况下完成,但我的目标是让循环更普遍地工作。显示此示例只是为了清楚地了解我正在处理的现象。

最佳答案

恕我直言,没有通用的 for 循环做你喜欢做的事情,但你可以通过添加轻松地做到这一点

if(d > 0) break

作为循环开始的第一条语句。

关于r - 用于检查空范围的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53817665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com