我運行在一個大於測試(見下文)for循環:如何在測試中使用數字(0)?
if(x > y){...}
,但在一個點y將成爲數字(0),而x將仍然是一個數字。所以我需要知道是否還有一種方法可以測試一個數字是否大於數字(0)。這是錯誤消息我得到的,當我做到這一點:
Error in if (x > y) { :
argument is of length zero
有沒有一種方法來測試它,甚至一種爲替代只是普通的數字0(0),在這種情況下?
感謝
我運行在一個大於測試(見下文)for循環:如何在測試中使用數字(0)?
if(x > y){...}
,但在一個點y將成爲數字(0),而x將仍然是一個數字。所以我需要知道是否還有一種方法可以測試一個數字是否大於數字(0)。這是錯誤消息我得到的,當我做到這一點:
Error in if (x > y) { :
argument is of length zero
有沒有一種方法來測試它,甚至一種爲替代只是普通的數字0(0),在這種情況下?
感謝
什麼是應該當你比較空值的號碼的情況發生?條件x> y是否應該評估爲TRUE或FALSE,還是應該有不同的效果?處理這種情況的一種方法是這樣的:
if (length(y) == 0) {
cat("y is numeric(0)")
} else {
if (x > y) {
cat("x is greater than y")
} else {
cat("x is less than or equal y")
}
}
另一種方法,這取決於(如BigFinger寫了)你想要的分支是什麼,
if(length(x)>0 && x>y) {do_your_stuff}
我這裏假設你的x
和y
是標量。否則,您需要更加小心,因爲if
不接受多值結果。
'&&'的一個問題是,它默默地接受長度大於1的向量的第一個元素。'if'給出警告消息。 –
@MatthewLundberg是的,因此我的警告。 –
你可以用'tryCatch'來做到這一點。發佈你的代碼,我會告訴你 –
'numeric(0)'(或任何零長度向量)可以通過檢查它的'長度'來識別,這將是0. – joran
你是絕對正確的。不知道我在想那個。對於那個很抱歉。 –