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