2015-04-02 118 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