突出情节中的几个点

Shi*_*ima 2 plot r

我尝试绘制以下数据,并用几个位置(点)来突出显示

plot(b$pos,b$log_p,col==ifelse(b$pos==c(14824849,13920386,14837470),90,100), pch=19, xlab='Chromosome 21 position', ylab='-log10(p)')
Run Code Online (Sandbox Code Playgroud)

生成的图仅显示一个突出显示为红色的点,并带有以下警告消息:

In b$pos == c(14824849, 13920386,14837470) : longer object length is not a multiple of shorter object length
Run Code Online (Sandbox Code Playgroud)

amb*_*ina 7

好的,问题可能是 ifelse 中的条件。如果您在 ifelse() 之外尝试条件 ( b$pos==c(14824849,13920386,14837470)),您将收到类似以下内容的错误消息:

较长的物体长度不是较短物体长度的倍数

如果将条件更改为:

b$pos %in% c(14824849,13920386,14837470)

您将得到一个 TRUE/FALSE 值向量,确定 b$pos 中的每个条目是否存在于向量中 (14824849,13920386,14837470),而不是 b$pos 中的条目是否等于 c(14824849,13920386,14837470) 。

x = c(49, 7, 66, 51, 43, 70, 35, 53, 6, 29)
y = c(10, 98, 44, 31, 37, 14, 64, 84,  4, 34)
x %in% c(6, 7)
Run Code Online (Sandbox Code Playgroud)

[1] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE

plot(x, y, col=ifelse(x %in% c(6, 7), 'red', 'blue'))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在这个数据集有 10 个x值,如果你要这样写:

plot(x, y, col=ifelse(x == c(1, 7), 'red', 'blue'))
Run Code Online (Sandbox Code Playgroud)

这会很好地工作,x 值将交替与 1 和 7 进行比较,例如:

49 == 1 ?
7 == 7 ?
66 == 1?
51 == 7? .... etc etc.
Run Code Online (Sandbox Code Playgroud)

错误消息表明您的向量长度 3 并未完全达到 b$pos 的长度。