2012-03-08 74 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