gpt4 book ai didi

r - 这个语法技巧的名称是什么?它在哪里记录?

转载 作者:行者123 更新时间:2023-12-04 18:09:38 24 4
gpt4 key购买 nike

以前没遇到过这个。来自 pairs.panels 的帮助页面包装内psych , 发现以下内容:

data(iris)
pairs.panels(iris[1:4],bg=c("red","yellow","blue")[iris$Species],pch=21)

我想问一下这个参数,它设置了为数据点绘制的圆圈的背景颜色: bg=c("red","yellow","blue")[iris$Species]显然,这个论点关联了 iris$Species 的 3 个级别。 ,一个因子,给出 3 种颜色。我不是问它做什么。

我想知道这种将动态传递的参数与数据级别相关联的方式被称为什么,以及它在哪里记录?好像有点 R魔法。如果我正在编写这个函数,我可能会分别传递颜色和因子的列名,然后在幕后手动进行关联。这个技巧可能非常有用。但从表面上看 [iris$Species]看起来数据正在索引本身。您不能输入 [iris$Species]例如,在控制台中,它只会给出一个错误。您可以输入 c("red","yellow","blue")[iris$Species]并得到正确答案。似乎有一些回收正在进行,但我不确定。我很好奇记录在哪里,以及是否有人可以用一两句话来解释发生了什么。例如,是 [iris$Species]被转换为整数,然后用于索引 3 种颜色的列表?我想就是这样,但我想要另一种意见。

注意:在 graphics::pairs 中使用了相同的技巧其中 panels.pairs是基于。

最佳答案

这里发生了两件事:

  • 系数iris$Species被强制为数字/整数。
  • 这些整数索引以通常的方式使用。

  • 强制

    这很重要,因为在这种情况下因子标签不是红色/黄色/蓝色:
    > all( c("red","yellow","blue")[iris$Species] == c("red","yellow","blue")[as.integer(iris$Species)] )
    [1] TRUE
    > all( c("red","yellow","blue")[iris$Species] == c("red","yellow","blue")[as.character(iris$Species)] )
    [1] NA

    用重复元素索引

    在 R 中,每当您索引一个简单的向量时,重复的索引元素都会被重复包含。
    > x <- letters[1:5]
    > x
    [1] "a" "b" "c" "d" "e"
    > x[c(1,3)]
    [1] "a" "c"
    > x[c(1,3,3,3,3)]
    [1] "a" "c" "c" "c" "c"

    这通常在替换采样时被利用。

    这是在哪里记录的?

    在很多地方,虽然并不总是强调它有多酷。

    例如,在第 11 页,W. N. Venables、D. M. Smith 和 R 开发核心团队。 R 简介。 R 注释:数据分析和图形编程环境。版本 2.5.0 (2007-04-23)。状态:
    > x[1:10]
    selects the first 10 elements of x (assuming length(x) is not less than 10). Also
    > c("x","y")[rep(c(1,2,2,1), times=4)]
    (an admittedly unlikely thing to do) produces a character vector of length 16 consisting of
    "x", "y", "y", "x" repeated four times.

    关于r - 这个语法技巧的名称是什么?它在哪里记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17817830/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com