2014-05-05 12 views
0
> x<-c(FALSE,FALSE) 
> which(x) 
integer(0) 
> which(x)==0 
logical(0) 
> x<-c(FALSE,TRUE) 
> which(x) 
[1] 2 

在我的程序中,我不知道x是什麼,x是一個邏輯向量,可能包含TRUE,如果它包含TRUE,則打印命令,如果它根本不包含TRUE,則打印0。如何在x中全部爲FALSE時運行哪個(x)?

整數(0)與0不同?有什麼區別?邏輯(0)的含義是什麼?
which(x)不能做,當x中沒有TRUE時,which(x)可以做,當x中有TRUE時。 我該如何完成我的目標?

+1

'整數(0)'是沒有條目在一個整數向量所有,並且類似地對於「邏輯(0)」。如果你想檢查vector是否爲空,你可以使用'which(x)== integer(0)'或'length(which(x))== 0'。 – ilir

+0

你可以使用'match(TRUE,x,nomatch = 0)' – shadow

+0

Hi,邏輯(o)的意思是結果是一個長度爲(0)的邏輯值的向量(沒有值)。整數(0)表示結果是一個無整數的向量。如果在您的邏輯向量中沒有TRUE,那麼您無法返回TRUE值的索引。 – droopy

回答

3

可以檢查在向量x的任何值是真與

any(x) 

而不是其中(),因此

if (any(x)) { 
    #print order 
} else { 
    print(0) 
} 
+0

確實!在很多地方,人們可以並且應該使用'Logic'本身,這正是@MrFlick在上面所顯示的方式。 –

相關問題