По-видимому, нет никаких ответов на переполнение стека о том, как curve
функция R работает и особенно о log
аргумента, так что это может быть хороший шанс проникнуть в него немного больше (мне понравился вопрос кстати):
Прежде всего легкой части:
c("","x","y","xy")
является строка вектор или более формально векторный характер.
for(ll in c("","x","y","xy"))
начнет цикл из 4 итераций, и каждый раз ll
будет '','x','y','xy'
соответственно. К сожалению, так, как этот пример построен, вы увидите только последний, построенный для ll = 'xy'
. погружение
Давайте в исходный код функции curve
ответить на остальные:
- Прежде всего, что делает
x
представляют в log(1+x)
?
log(1+x)
- это функция. x
представляет собой вектор чисел, который будет создаваться внутри функции curve
в следующей части (от исходного кода):
x <- exp(seq.int(log(from), log(to), length.out = n)) #if the log argument is 'x' or
x <- seq.int(from, to, length.out = n) #if the log argument is not 'x'
#in our case from and to are 1 and 100 respectively
Пока n
аргумент по умолчанию, который x
вектор содержит 101 элементов. Очевидно, что x
в log(1+x)
полностью отличается от «x» в аргументе log
.
за y
он всегда создается как (из исходного кода):
y <- eval(expr, envir = ll, enclos = parent.frame()) #where expr is in this case log(1+x), the others are not important to analyse now.
#i.e. you get a y value for each x value on the x vector which was calculated just previously
- Во-вторых, какова цель
log
аргумента?
log
аргумент определяет, какой из x
или y
осей будет регистрироваться.Ось х, если 'x'
является аргументом log
, ось у, если 'y'
является аргументом log
, как ось, если 'xy'
является аргументом log
и нет лог-шкалы, если log
аргумент ''
.
Необходимо отметить здесь, что логарифм х или у оси вычисляется в plot
функции в функции curve
, то есть функция curve
только обертка для функции plot
.
Сказанное выше, поэтому, если аргумент log
равен «x» (см. Выше), экспоненциальная величина значений логарифма вектора x рассчитывается так, чтобы они возвращались к зарегистрированным в функции plot
.
P.S. исходный код для функции curve
можно увидеть с помощью ввода graphics::curve
на консоли.
Надеюсь, теперь это будет иметь смысл!
Кривая 'log (1 + x)' не влияет непосредственно на цикл. Как вы видите, 'll' выполняет итерацию через вектор символа' c ("", "x", "y", "xy") 'и подается в параметр' log' внутри 'curve'. Описание параметра: 'Значение log используется как для указания осей графика (если только add = TRUE), а как интерпретируется« равноотстоящий »: если х-компонент указывает масштабирование по логарифму, точки, в которых выражение или функция накладывается равномерно на шкалу журнала. 'Так что, если вы определяете, например,' log = "x", это означает, что ваша ось x будет отображаться логарифмически. –
Короткий ответ заключается в том, что параметр 'll' ia передается только формальным аргументам в' curve', которые «ожидают» (или более точно определяются как принимающие) значения символов. –
'для (буквы в c (" a "," b "," c ")) print (letter)' – Gregor