2014-10-16 167 views
0

寫一個向量化的ifelse()我想創建一個新的變量並將其分配回數據框。vectorized ifelse Rstudio

set.seed(1) 
heights <- data.frame(
height_ft = sample( seq(from=5.5, to=6.1, length=10) , 50, replace=T), 
gender = sample(c("M","F"),50, replace=T) ) 

這裏是我的嘗試:

y = ifelse(gender = "F", 1,0) 
##ERROR 

if (gender = "F" & under_rep = 1){ print ("1") } 
else if (gender = "F" & under_rep = 0) { print ("0") } 
##ERROR 
+0

在'if'和'ifelse'語句中用'=='替換'='。 '=='是你用於邏輯檢查的確切的等式 – 2014-10-16 21:51:18

+0

我同意它應該被關閉。我想知道如果這可能是任何有關'if(){} else {}'和'ifelse'的新問題可能會被問到。有近4,000個問題。這個質量不好,因爲它沒有包含實際的錯誤信息。 – 2014-10-16 22:32:53

+0

如果你曾經使用'else if',你應該也可以使用'else'作爲最後一個 – 2014-10-17 15:53:55

回答

1

由於@BondedDust指出,不包括在後的錯誤信息,這將是有幫助的。但是不難從代碼中重現這個錯誤。

錯誤是Error in ifelse(gender = "F", 1, 0) : unused argument (gender = "F")

錯誤消息中的「未使用的參數」來自R沒有在其環境中的任何位置找到gender,因爲它所在的heights數據幀未被調用,如在heights$gender中。

但是@Richard_Scriven指出,條件也沒有被正確地使用。應該是==而不是=

最後,將新var分配回數據框不是使用y而不是heights$y

+0

你的聲明*錯誤信息中的「未使用的參數」來自R在其環境中的任何地方找不到性別...... *是不正確的。 R在'ifelse'中尋找'gender'的參數,並且由於'ifelse'沒有'gender'參數,錯誤被觸發。它不是在函數參數列表之外尋找。 – 2014-10-17 15:49:02