Несколько цветов для точек данных с диаграммой рассеяния в R - PullRequest
0 голосов
/ 01 мая 2020

поэтому мое задание - в основном попасть на график ниже. Данные взяты из фрейма данных, в котором есть определенные значения, помеченные как NA. Таким образом, мой код выглядит следующим образом:

> plot(temp,ozone,
+      xlab = "temperature",
+      ylab = "ozone",
+      col = ifelse(which(ozone>100), "red", "orange",),
+      pch = 17)

Однако сейчас я получаю сообщение об ошибке:

"Error in ifelse(which(ozone > 100), "red", "orange", ) : 
  unused argument (alist())

Буду признателен за любые отзывы / указания на то, что пошло не так. Ранее я также пробовал что-то вроде:

highlevels <- which(ozone>100)
lowlevels <- which(ozone<100)
col = c("red","orange")[highlevels,lowlevels]

Однако ясно, что это тоже не сработало ... Goal

1 Ответ

3 голосов
/ 01 мая 2020

Оставьте which и оберните его в другой ifelse - это один из вариантов:

plot(temp, ozone,
     xlab = "temperature",
     ylab = "ozone",
     col = ifelse(ifelse(!is.na(ozone), ozone, 0) > 100, "red", "orange"),
     pch = 17)

В противном случае функции типа tidyr::replace_na или dplyr::coalesce могут помочь вам, если вы используете эти библиотеки.

Другим вариантом может быть подстановка всех переменных в те, которые не пропущены.

Еще один параметр - установка

col =  c("red", "orange")[(ozone > 100) + 1]

, но это довольно сложно.

...