2012-12-30 95 views
0

我是R的初學者,我試圖瞭解ifelse的工作原理。如何在數據幀上使用ifelse

我試圖像簡單的東西:

ifelse(mydataframe$col1==mydataframe$col2 , 
    mydataframe$newCol<-TRUE, 
    mydataframe$newCol<-FALSE 
) 

mydataframe$col1col2的因素。 在這種情況下我newCol將永遠FALSE,因爲我用這種方式證明這是錯誤的:

mydataframe$newCol<- mydataframe[mydataframe$col1==mydataframe$col2] 

我也不想使用for循環,這通常是我的嘗試慢。

我做錯了什麼?

+0

你的意思就是像'mydataframe $ newCol < - as.character(mydataframe $ col1)== as.character(mydataframe $ col2)''? – A5C1D2H2I1M1N2O1R2T1

+0

我認爲'as.character()'可能是不必要的,因爲(因爲我剛剛發現)'=='因素返回一個錯誤,如果因素有不同的水平。 –

回答

3

ifelse()接受返回值作爲第二和第三個參數(並且您正在寫作業)。

嘗試:

mydataframe$newCol <- 
    with(mydataframe, 
     ifelse(col1 == col2, 
       TRUE, 
       FALSE)) 
2

由於事實上,你並不需要使用ifelse==應該足夠了,如:

mydataframe$newCol <- with(mydataframe, col1 == col2) 

它會返回一個布爾值向量。

+0

我希望這個問題能夠顯示一個非常精細的例子,並且提問者實際上並不需要這個確切的操作。 –

+0

問題是關於如何理解ifelse()是如何工作的(第一行);-) – lgautier