我正在学习R,我在seq()上遇到了问题 我知道seq(0,3)是0 1 2 3. 但我不知道为什么seq(0:3)是1 2 3 4.

在RDocumentation(https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/seq)中,它说,

seq(from, to)
seq(from, to, by= )
seq(from, to, length.out= )
seq(along.with= )
seq(from)
seq(length.out= )

第一种形式从+/-1的…生成序列,To(等同于From:To).

那么,seq(0,3)和seq(0:3)不是真的相同吗?

推荐答案

seq(0,3)号和seq(0:3)号不一样.在第一种情况下,您将使用参数(from=to=)调用函数,而在第二种情况下,您将向函数(from=)传递单个参数.传递单个值或向量并不重要(因为R中没有单个值,只有长度为1的向量).考虑

seq(3:6)
[1] 1 2 3 4

如果只将一个参数传递给seq(),并且该参数的长度大于1,则它会将序列1返回到对象的长度.此行为将在稍后的帮助文件中介绍

第五种形式生成序列1,2,...,LENGTH(FORM)(就像已经指定了参数和.WITH一样),除非当参数被解释为1:FROM时,参数是长度为1的数字(为了与S兼容,即使对于SEQ(0)也是如此).最好使用seq_long或seq_len(除非必须严格兼容S).

"第一种形式……[is](与From:to相同)"的意思是seq(0, 3)0:3相同,而不是seq(0:3)

您可以在seq.default的代码中看到这种行为.对单个参数的判断在代码的早期进行

...
if ((One <- nargs() == 1L) && !missing(from)) {
    lf <- length(from)
    return(if (mode(from) == "numeric" && lf == 1L) {
        if (!is.finite(from)) stop("'from' must be a finite number")
        1L:from
    } else if (lf) 1L:lf else integer())
}
...

R相关问答推荐

更改网格的crs以匹配简单要素点对象的crs

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

在R中,如何在每个堆叠的条上放置误差条,特别是当使用facet_grid时?

将数据集中的值增加到当前包含的最大值

删除具有相同标题的tabPanel(shinly)

迭代到DataFrame列并获得成对的值列表(col1->;col2、col2->;col3、col3->;col4等)的正确方法.

DEN扩展包中的RECT树形图出现异常行为

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

警告消息";没有非缺失的参数到min;,正在返回数据中的inf";.表分组集

有没有办法定制Plot(allEffects())面板标题?

R中时间间隔的大向量与参考时间间隔的相交

错误包arrowR:READ_PARQUET/OPEN_DATASET&QOT;无法反序列化SARIFT:TProtocolException:超出大小限制&Quot;

如何判断代码是否在R Markdown(RMD)上下文中交互运行?

在ggploy中创建GeV分布时出错

抽样变换-REXP与RWEIBUR

如何使用ggplot2根据绘图中生成的斜率对小平面进行排序?

使用一个标签共享多个组图图例符号

如何创建一个由一个连续变量和一个因素变量组成的复杂方框图?

我怎么才能把一盘棋变成一盘棋呢?

如果y中存在x中的值,则将y行中的多个值复制到相应的x行中