2017-10-13 9 views
0

私はデフォルトのDiamondデータセットでいくつかの操作を試みていましたが、cut = idealとclarity = vs2という2つのカラム値を考慮する必要があるという問題がありました。これらの2つが真であれば、私の関数は最初の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を答えることになっています。他はuが望んでいたかを理解するよう

私たちが必要なもの

+0

単純な関数です助けてください、あなたは最初の6行の期待される出力を示すことができました。 '&& 'は'& 'でなければなりません。 'apply'を実行すると、factor列があると仮定すると、factor列があると仮定して' matrix'に変換されます。 – akrun

+0

最初の6行の期待される出力は1になります。修正された&thnks –

+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 
関連する問題