2012-03-08 73 views
0

理解这个绘图功能当研究的线性模型,我曾经读取用于绘制下述R脚本:混乱上中的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"))的目标是实现什么?

回答

3

实际上,它将根据第一列(d[,1])的值设置点的颜色(col)。的值之间的特定映射可以由锻炼的可能性来得到:

d[,1]=="A"TRUE如果第一列是“A”,否则FALSE

1+(d[,1]=="A")取此TRUE/FALSE值并将其转换为数字(分别为1和0),以便它可以添加到数字1.因此,如果第一列为“A”,则为2,并且否则为1。如果第一列为“A”,则为4,否则为2

实际效果是,对应于第一列为“A”的行的点以彩色4绘制,其他所有点都以颜色2绘制。

要确定这些数字指的是什么颜色,它们是palette()结果中的索引。

> palette()[4] 
[1] "blue" 
> palette()[2] 
[1] "red" 

因此,第一列为“A”的点为蓝色,其他点为红色。

+1

也许还值得一提的是供给到'col'整数被用于含有一组默认颜色()'(由'调色板返回的向量的索引的元素,但也可以是复位由用户)。 – 2012-03-08 20:10:50

+0

@ JoshO'Brien好主意。我已经添加到我的答案。 – 2012-03-08 20:15:25

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) 

enter image description here