путаница в понимании этой функции построения графиков в R - PullRequest
0 голосов
/ 08 марта 2012

При изучении линейного моделирования я однажды прочитал следующий 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"))?

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

По сути, это установка цвета (col) точек на основе значения первого столбца (d[,1]). Конкретное сопоставление между значениями можно получить, разработав возможности:

d[,1]=="A" равно TRUE, если первый столбец «А», FALSE в противном случае.

1+(d[,1]=="A") принимает это значение ИСТИНА / ЛОЖЬ и преобразует его в число (1 и 0 соответственно), чтобы его можно было добавить к числу 1. Таким образом, 2, если первый столбец равен "A "и 1 в противном случае.

2*(1+(d[,1]=="A")) просто умножает эти числа на 2, поэтому 4, если первый столбец «А», и 2 в противном случае.

Чистый эффект - это та точка, которая соответствует строкам, в которых первый столбец «А» нарисован цветом 4, а все остальные точки нарисованы цветом 2.

Чтобы определить, к каким цветам относятся эти числа, они являются индексами в результатах palette().

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

Итак, точки, которые в первом столбце обозначены буквой «А», выделены синим цветом, остальные - красным.

1 голос
/ 09 марта 2012

Я опаздываю со своим ответом, но он все еще может быть полезен кому-то ...

Параметр 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...