2014-01-15 48 views
0

我有一個數據框應用邏輯測試:是任何列TRUE?布爾開關:「任何」的行爲

x=data.frame(label=c('a','b','c'),outcome1=c(TRUE,FALSE,FALSE),outcome2=c(FALSE,FALSE,TRUE),outcome3=c(TRUE,FALSE,FALSE)) 
x=transform(x,result=any(outcome1,outcome2,outcome3)) 

x 
# label outcome1 outcome2 outcome3 result 
# 1  a  TRUE FALSE  TRUE TRUE 
# 2  b FALSE FALSE FALSE TRUE 
# 3  c FALSE  TRUE FALSE TRUE 

我不明白爲什麼第2行的結果是TRUE,因爲並非所有的列條款都是真的。

any(FALSE,FALSE,FALSE) 
FALSE 

在這種情況下應用「any」的正確方法是什麼?

+2

「任何」不是「全部」。如果英語不是您的第一語言,請在字典中查找「any」和「all」。 – Roland

+0

@Roland:的確不是我的第一語言:-)。但要以不同的方式表達:爲什麼會有(FALSE,FALSE,FALSE)錯誤。而在數據幀中它爲TRUE? – Henk

回答

1

你的代碼計算

any(c(TRUE,FALSE,FALSE),c(FALSE,FALSE,TRUE),c(TRUE,FALSE,FALSE)) 

和回收的結果來填充列。

+0

我會檢查字典中的「回收」。 – Henk