根据阈值

时间:2017-10-05 15:41:39

标签: r scatter-plot labeling

我想创建一个散点图,在某个x和y值之上标记了点,并且在这些值之下没有标签的点。

我在考虑像

这样的东西
plot(data[,2]~data[,3], ylim=rev(range(data[,2])), xlim=c(-20,20), log="y", type="n")
text(data[,2]~data[,3], labels=ifelse(data[,2] < 0.05 && data[,3] > 1, data[,1], points(y,x)))

但它给了我这个错误:

Error in ans[!test & ok] <- rep(no, length.out = length(ans))[!test &  : 
replacement has length zero
In addition: Warning message:
In rep(no, length.out = length(ans)) :
'x' is NULL so the result will be NULL

我在SO上发现了一些类似的问题,但没有任何东西可以适应我的需求 - 至少我的知识有限。

(我是R的新手,所以请忍受我的问题。)

1 个答案:

答案 0 :(得分:0)

有两个问题
text(data[,2]~data[,3], labels=ifelse(data[,2] < 0.05 && data[,3] > 1, data[,1], points(y,x)))

查看此答案: R - boolean operators && and || 要理解&amp;和和&amp;&amp; ,你的案例“&amp;”会更有意义。 第二个问题是

points(y,x)

当逻辑响应为“FALSE”时,将调用此部分代码;即if条件的FALSE分支; 积分我猜是一个本地函数,它接受参数x&amp; y;但是x和y还没有在ifelse的parent.frame(范围)中实例化。所以,当你修复“&amp;”;你会得到一个关于点(y,x)的错误。确保

时需要执行的功能
data[,2] < 0.05 & data[,3] > 1

为false将返回一个值。