2013-10-04 1 views
-1

В R я хотел бы создать функцию, которая возвращает наименьшее n, так что n-е повторение натурального логарифма дает значение меньше единицы. Пример: fun (9182) = 3, потому что ln (ln (ln (9182))) = 0,793 < 1. Любые предложения будут оценены!logstar function_the итерация естественного logarithm_r

+0

Добро пожаловать в SO - не могли бы вы сообщить нам, что вы уже пробовали? – chopper

ответ

2
logstar<-function(x){if (x<1) 0 else 1 + logstar(log(x))} 
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 в некоторых случаях.

 Смежные вопросы

  • Нет связанных вопросов^_^