apply函数中的ifelse语句不返回任何值

时间:2017-10-13 03:26:47

标签: r apply

我一直在尝试对默认的Diamond数据集进行一些操作,并提出了一个问题,我需要考虑两个列值cut = ideal和clarity = vs2。如果这两个都是真的那么我的函数将返回前n个样本中这些类型的钻石的总数。 我的代码如下:

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,但是没有发生。

请帮助

1 个答案:

答案 0 :(得分: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