2015-04-02 83 views
0
ifelse(BL0304_t2$BAXPFC11==1 & BL0304_t2$BAXPFC21==1 & 
     BL0304_t2$BAXPFC31==1 & BL0304_t2$BAXPFC41==1, 
     BL0304_t2$passcode <-1 , BL0304_t2$passcode <- 2) 

这应该给我“1”为“密码”时“BAXPFC11”的价值观,“BAXPFC21”,“BAXPFC31”,“BAXPFC41”中的“1”是和条件,否则应该给我“2”。但是这在所有情况下都给我“2”。我无法理解代码的错误。[R ifelse不给我正确的输出

回答

0

ifelse由三个论证组成1)逻辑测试2)如果值为真3)值如果为假。你可以用它来创建一个新的对象。由于您没有提供任何数据或期望。这是我的猜测,你想要什么......

BL0304_t2$passcode=ifelse(BL0304_t2$BAXPFC11==1 & BL0304_t2$BAXPFC21==1 & 
BL0304_t2$BAXPFC31==1 & BL0304_t2$BAXPFC41==1,1,2) 

由于@Pascal评论,你也可以修改代码使用with(),以尽量减少字符,这看起来像:

BL0304_t2$passcode=with(BL0304_t2,ifelse(BAXPFC11==1 & BAXPFC21==1 & 
BAXPFC31==1 & BAXPFC41==1,1,2)) 
+1

更妙的是: 'BL0304_t2 $ passcode < - with(BL0304_t2,ifelse())'。 – 2015-04-02 03:21:13

+0

谢谢。这对我有效。 :-)我的代码有什么问题 – 2015-04-02 03:39:15

+0

您在第二个和第三个参数中命名了一个新对象。如果有效,请接受答案。谢谢! – User7598 2015-04-02 03:41:57