2017-10-05 164 views
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的新手,所以請我的問題承擔。)

+0

你應該使用一個'&',如果你想在兩個向量之間使用邏輯AND' – wici

+0

@wici我改變了它,但錯誤仍然存​​在... – LinuxBlanket

回答

0

有此回答兩個問題與

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

結帳: R - boolean operators && and || 瞭解&之間的差異& &,你的情況「&」會更有意義。 第二個問題是

points(y,x) 

的代碼此部分稱爲當邏輯響應爲「假」;即if條件的FALSE分支; 我猜是一個本地函數,需要參數x & y;但x和y沒有在ifelse的parent.frame(範圍)中實例化。所以當你修復「&」;你會得到一個圍繞點(y,x)的錯誤。確保您需要執行的功能

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

爲false將返回一個值。

+0

我糾正了&&錯誤,但它給了我同樣的錯誤在 – LinuxBlanket

+0

text(data [,2]〜data [,3],labels = ifelse(data [,2] <0.05&data [,3]> 1,data [,1],data [,2]))之前,嘗試一下,看看你是否有數據點。如果是這樣的話;像我指出的那樣(y,x)顯然需要糾正。 – Yash