【问题标题】:How does R treat positional argumentsR如何处理位置参数
【发布时间】:2013-11-05 07:48:08
【问题描述】:

我是一个 python 人,对 R 非常陌生(到目前为止,我所做的只是复制粘贴代码并截屏生成的图形)。

我现在想真正学习该语言,以便绘制有用的图(现在,我正在尝试绘制this)。

在尝试我的第一个情节时,我遇到了这个函数调用:

sets_options("universe", seq(from = 0, to = 25, by = 0.1))

现在,我想知道是否可以通过调用实现相同的结果

sets_options("universe", seq(0, 25, 0.1))

seq 的帮助页面没有具体说明这一点(或者我没有正确阅读它),所以我希望有人能阐明 R 如何处理位置参数

我尝试在 R 中以这种方式调用该函数并且它有效(没有语法错误等),但我不知道如何测试该函数的输出,所以我不得不在这里询问

【问题讨论】:

标签: r arguments


【解决方案1】:

调用sets_options() 将显示当前设置。从以下日志来看,位置参数似乎按预期处理:

> sets_options("universe", seq(0,5,0.25))
> sets_options()
$quote
[1] TRUE

$hash
[1] TRUE

$openbounds
[1] "()"

$universe
 [1] 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00

> sets_options("universe", seq(from=0,to=5,by=0.25))
> sets_options()
$quote
[1] TRUE

$hash
[1] TRUE

$openbounds
[1] "()"

$universe
 [1] 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00

【讨论】:

  • 正确。位置参数在 R 中始终有效,python 中存在的顺序在 R 中不存在。您还可以按照您想要的任何顺序定义函数 args。
【解决方案2】:

问题是 seq 对位置对象和命名对象做了什么。解决这个问题的方法是查看 ?seq 页面,该页面列出了命名参数及其顺序:

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),
length.out = NULL, along.with = NULL, ...)

所以seq(0, 25, 0.1) 的解释方式与seq(from = 0, to = 25, by = 0.1) 相同,因为顺序与使用列表中的名称相同。

【讨论】:

  • 我确实阅读了该页面并尝试得出您提出的结论。但是,我注意到by 默认为((to - from)/(length.out - 1)),length.out 默认为NULL。因此,我无法确定哪些变量具有哪些值,因为其中一个默认赋值使用了我不提供的值
  • 您的值替换默认值。
  • 但是如果我没有为((to - from)/(length.out - 1)) 提供值怎么办?
  • 然后by 使用该表达式根据from、to 和length.out 给出的内容进行计算
  • 但是我还是没有指定length.out,默认是NULL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 2014-09-09
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
相关资源
最近更新 更多