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