之前没有碰到过这个。在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
使用相同的技巧。
答案 0 :(得分:7)
这里有两件事:
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 Development Core Team。关于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.