Arrays 在向量中循环

Arrays 在向量中循环,arrays,r,loops,vector,while-loop,Arrays,R,Loops,Vector,While Loop,我正在使用Rstudio并尝试创建一个函数,该函数将循环通过一个向量,并使用while条件执行计算。然后,函数应返回一个数据帧,其中一列中包含输入的向量,以及在另一列中满足while条件所需的迭代次数。 我已经创建了一个函数,它使用while条件进行计算,while条件是我遇到问题的函数的基本操作。这是: t5<-function(x){ z=x while(x != 1){ if(x %% 2 == 0) x= x/2 el

我正在使用Rstudio并尝试创建一个函数,该函数将循环通过一个向量,并使用while条件执行计算。然后,函数应返回一个数据帧,其中一列中包含输入的向量,以及在另一列中满足while条件所需的迭代次数。 我已经创建了一个函数,它使用while条件进行计算,while条件是我遇到问题的函数的基本操作。这是:

t5<-function(x){
z=x
    while(x != 1){
        if(x %% 2 == 0)
            x= x/2
        else x= (3 * x +1)

        z=c(z, x)
}

return (z)
}

有人能帮我理解如何让t7(2:10)运行这个数组,并返回一个数据帧,列出数组以及数组中每个数字达到数字1所需的迭代次数吗?任何帮助都将不胜感激

您可以使用
sapply
功能获得所需的向量:

data.frame(x=2:10, iters=sapply(2:10, function(x) length(t5(x))-1))
#    x iters
# 1  2     1
# 2  3     7
# 3  4     2
# 4  5     5
# 5  6     8
# 6  7    16
# 7  8     3
# 8  9    19
# 9 10     6

或者修改为
data.frame(x=2:10,iters=length(sappy(2:10,t5))-1)
     t7(2:10)
     [1] 1
    [1] 7
    [1] 2
    [1] 5
    [1] 8
    [1] 16
    [1] 3
    [1] 19
    [1] 6
data.frame(x=2:10, iters=sapply(2:10, function(x) length(t5(x))-1))
#    x iters
# 1  2     1
# 2  3     7
# 3  4     2
# 4  5     5
# 5  6     8
# 6  7    16
# 7  8     3
# 8  9    19
# 9 10     6