0

我想创建一个散点图,在某些 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 的新手,所以请耐心等待我的问题。)

4

1 回答 1

0

有两个问题

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

签出这个答案: R - 布尔运算符 && 和 || 要了解 & 和 && 之间的区别,您的案例“&”会更有意义。第二个问题是

points(y,x)

这部分代码在逻辑响应为“FALSE”时调用;即if条件的FALSE分支;我猜的点是一个接受参数 x & y 的局部函数;但是 x 和 y 尚未在 ifelse 的 parent.frame (范围)中实例化。所以当你修复“&”; 你会得到一个围绕点(y,x)的错误。确保您需要在何时执行的功能

data[,2] < 0.05 & data[,3] > 1

为 false 将返回一个值。

于 2017-10-05T16:03:28.547 回答