在研究线性建模时,我曾阅读过以下用于绘图的R脚本:
plot(d[, 2], d[, 4], xlab="d[, 2]", ylab="d[, 4]", col=2 * (1 + (d[, 1] == "A")))
这里d是数据集。让我感到困惑的是如何理解col=2 * (1 + (d[, 1] == "A"))
要达到的目标?
答案 0 :(得分:3)
实际上,它是根据第一列(col
)的值设置点的颜色(d[,1]
)。可以通过计算可能性来获得值之间的具体映射:
d[,1]=="A"
为TRUE
,否则为FALSE
。
1+(d[,1]=="A")
获取此TRUE / FALSE值并将其转换为数字(分别为1和0),以便可以将其添加到数字1中。如果是第一个,则为2
列为“A”,否则为1
。
2*(1+(d[,1]=="A"))
只是将这些数字乘以2,如果第一列为“A”则为4
,否则为2
。
净效果是与第一列为“A”的行对应的点以彩色4
绘制,而所有其他点以彩色2
绘制。
要确定这些数字所指的颜色,它们是palette()
的结果的索引。
> palette()[4]
[1] "blue"
> palette()[2]
[1] "red"
第一列为“A”的点为蓝色,其他为红色。
答案 1 :(得分:1)
我的回答迟到了,但它可能对某人有帮助......
参数col
决定了图上点的颜色。
# Create some data to plot.
x=1:5
y=x^2
group = c("A", "A", "B", "B", "C")
group == "A" # Outputs a logical vector.
# [1] TRUE TRUE FALSE FALSE FALSE
2 * (1 + (group == "A")) # Changes logical vector to integers.
# [1] 4 4 2 2 2
# col parameter interprets integers as colors for each point in the plot.
plot(x, y, col=2 * (1 + (group == "A")), pch=20, cex=3)