2017-10-13 158 views
0

我一直在試圖對默認鑽石數據集進行一些操作,並提出了一個問題,我需要考慮兩個列值cut = ideal和clarity = vs2。如果這兩個都是真的,那麼我的函數將返回前n個樣本中這些類型鑽石的總數。 我的代碼如下:應用函數中的Ifelse語句沒有返回任何值

idealvs2<- function(n){ 
    k<-0 
    s<-apply(head(diamonds,n),1, function(x)ifelse(diamonds$cut=="Ideal" && diamonds$clarity=="VS2",k<-k+1,k<-k+0)) 
    return(k) 
} 

idealvs2(10)應該回答3這是不會發生。

請幫助

+0

你能告訴前6行預期的輸出讓別人明白什麼ü想要的。 '&&'應該是'&'。當你做一個'apply'時,它會轉換成一個'matrix',假設有因子列,它可能會產生問題 – akrun

+0

對於前6行的預期輸出將是1.校正和 –

+0

對於6行,應該它是2? – akrun

回答

0

我們需要的是一個簡單的函數來sum邏輯矢量(cut == "Ideal" | clarity == "VS2"

f1 <- function(dat, n){ 
     tmp <- head(dat, n) 
     with(tmp, sum(cut== "Ideal" | clarity == 'VS2')) 
} 

f1(diamonds, 10) 
#[1] 3