我尝试绘制以下数据,并用几个位置(点)来突出显示
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)
好的,问题可能是 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 的长度。