logstar function_the自然logarithm_r的迭代

时间:2013-10-04 19:45:10

标签: r natural-logarithm

在R中,我想创建一个返回最小n的函数,使得自然对数的第n次重复给出小于1的值。例如:fun(9182)= 3因为ln(ln(ln(9182)))= 0,793< 1。 任何建议将不胜感激!

2 个答案:

答案 0 :(得分:2)

logstar<-function(x){if (x<1) 0 else 1 + logstar(log(x))}

答案 1 :(得分:2)

@ mrip的答案适用于单个值。如果你想要一个适用于矢量的函数,你需要使用ifelse()而不是if

> logstar <- function(x){ifelse(x<1,0,1 + logstar(ifelse(x<1,x,log(x))))}

> x = c(0.5,1,100,10000,1E8)
> logstar(x)
[1] 0 1 3 3 4

ifelse()递归调用中的logstar()会阻止log()在某些情况下生成NaN