2014-01-15 20 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