如何在R中定义递归for循环?
我有一个未知数量的变量,对于每个变量,我需要定义一个for循环并执行一系列操作。对于每个后续变量,我需要在前一个变量中定义一个嵌套循环,执行相同的操作。我想一定有一种递归的方法,但我正在努力 例如,考虑以下简单示例:如何在R中定义递归for循环?,r,for-loop,recursion,R,For Loop,Recursion,我有一个未知数量的变量,对于每个变量,我需要定义一个for循环并执行一系列操作。对于每个后续变量,我需要在前一个变量中定义一个嵌套循环,执行相同的操作。我想一定有一种递归的方法,但我正在努力 例如,考虑以下简单示例: results = c() index = 0 for(i in 1:5) { a = i*2 for(j in 1:5) { b = a*2 + j for(k in 1:5) { index = index + 1
results = c()
index = 0
for(i in 1:5)
{
a = i*2
for(j in 1:5)
{
b = a*2 + j
for(k in 1:5)
{
index = index + 1
c = b*2 + k
results[index] = c
}
}
}
在这个例子中,我有3个变量。j上的循环需要来自循环i的信息,k上的循环需要来自循环j的信息。这是我问题的一个简化示例,这里的操作非常简单。我对获取“结果”向量的另一种方法不感兴趣,我想知道的是,是否有一种方法可以递归地对未知数量的变量执行此操作,比如说10个变量,这样我就不需要手动嵌套10个循环 我已尝试更改代码,使其成为一个允许定义需要进行多少次迭代的函数
library(tidyverse)
fc <- function(i_end, j_end, k_end){
i <- 1:i_end
j <- 1:j_end
k <- 1:k_end
df <- crossing(i, j, k) %>%
mutate(
a = i*2,
b = a*2 + j,
c = b*2 + k,
index = row_number())
df
}
fc(5,5,5)
库(tidyverse)
fc这里有一种方法,您可以根据自己的情况进行修改
results <- 0 #initialise
for(level in 1:3){ #3 nested loops - change as required
results <- c( #converts output to a vector
outer(results, #results so far
1:5, #as in your loops
FUN = function(x,y) {x*2+y} #as in your loops
)
)
}
结果我的问题是这段代码将是更大函数的一部分。该函数控制变量的数量,因此我不知道该数量,以便定义“每个循环进行多少次迭代”的乘积。因此,我考虑递归执行。我试图更改代码,使其成为一个函数,并且您可以控制每个I、j、k等的迭代次数。对不起,我想我没有解释我自己。问题是,在这个例子中,我有(j,j,k)(3个元素),但在其他情况下,这可能会有所不同,我可能需要迭代(I,j)(2个元素)或(I,j,k,l,m,n)(6个元素)。。。我也不知道我的代码需要处理多少元素。