R 基于行打印条件颜色

R 基于行打印条件颜色,r,plot,colors,R,Plot,Colors,我有两个data.frame,分别称为异常值和数据 异常值只保留需要着色的行号。 数据有1000个数据。 它有两列,分别称为x和y。 如果异常值中存在行号,我希望绘图中的点为红色,否则为黑色 plot(data$x, data$y, col=ifelse(??,"red","black")) 应该有东西在里面 我认为这可以通过在数据框中创建一个新的颜色列来实现: data$color <- "black" 结果是:您好,使用ifelse这种方法对我有效,请告诉我您的想法: outlie

我有两个data.frame,分别称为异常值数据

异常值只保留需要着色的行号。 数据有1000个数据。 它有两列,分别称为xy。 如果异常值中存在行号,我希望绘图中的点为红色,否则为黑色

plot(data$x, data$y, col=ifelse(??,"red","black"))

应该有东西在里面

我认为这可以通过在数据框中创建一个新的颜色列来实现:

data$color <- "black"

结果是:

您好,使用
ifelse
这种方法对我有效,请告诉我您的想法:

outlier <- sample(1:100, 50)
data <- data.frame(x = 1:100, y = rnorm(n = 100))
plot(
  data[ ,1], data[ ,2]
  ,col = ifelse(row.names(data) %in% outlier, "red", "blue")
  ,type = "h"
)

异常值??应该是
1:lenght(x)%in%outlier
您首先是如何创建
outlier
的……长话短说,如果我打印
outlier。[1]178 318 333 556 611 615 716 840 965
我不知道您为什么需要我如何创建异常值。但以防万一<代码>异常值=哪个(数据$x>(分位数(数据$x,0.5)+IQR))
分位数(数据$x,0.5)=中间值(数据$x)它产生正确的颜色,但稍微长一点。我想通过
ifelse
或更简单的版本来实现它。再说一次,是的,它起作用了。谢谢你的时间嗨Etibar,我对你的评论有点困惑。我的解决方案是两行。你是说你只接受长度为0或1行的答案吗?
outlier <- c(1, 2, 7, 9)
data <- data.frame(x=c(1,2,3,4,5,6,7,8,9,10),
                   y=c(1,2,3,4,5,6,7,8,9,10))
data$color <- "black"
data[outlier,"color"] <- "red"
data
    x  y color
1   1  1   red
2   2  2   red
3   3  3 black
4   4  4 black
5   5  5 black
6   6  6 black
7   7  7   red
8   8  8 black
9   9  9   red
10 10 10 black
plot(data$x, data$y, col=data$color)
outlier <- sample(1:100, 50)
data <- data.frame(x = 1:100, y = rnorm(n = 100))
plot(
  data[ ,1], data[ ,2]
  ,col = ifelse(row.names(data) %in% outlier, "red", "blue")
  ,type = "h"
)