以下代码如何运作?当我阅读R ?curve
的帮助热线时,我得到了一个例子。但我还没有理解这一点。
for(ll in c("", "x", "y", "xy"))
curve(log(1+x), 1, 100, log = ll,
sub = paste("log= '", ll, "'", sep = ""))
特别是,我习惯将数值作为for-loop
as,
for(ll in 1:10)
但是下面的命令是什么:
for(ll in c("","x","y","xy"))
c("","x","y","xy")
看起来像一个字符串向量? c("","x","y","xy")
如何在curve
内工作
功能为log(1+x)
[这里的x是什么?字符串“x”?在c("","x","y","xy")
]和log=ll
?
答案 0 :(得分:2)
显然,堆栈溢出没有关于R中curve
函数如何工作的答案,特别是关于log
参数的答案,所以这可能是一个很好的机会深入研究它(我喜欢btw的问题:
首先是简单的部分:
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)
与log
参数中的'x'完全不同。
至于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
参数,则x轴,如果'y'
是log
参数,则为y轴,如果'xy'
为{{1},则为轴如果log
参数为log
,则参数和无对数比例。
这里需要提到的是x或y轴的日志是在''
函数的plot
函数中计算的,即curve
函数只是一个curve
函数的包装器。
如上所述,这就是为什么如果plot
参数为'x'(见上文),则计算向量x的对数值的指数,以便它们将返回到log
内的记录值。 {1}}功能。
P.S。在控制台上输入plot
可以看到curve
函数的源代码。
我希望现在有点意义!