0

各サンプルが最大かどうかを示すブール列を作成したいと思います。この関数を作成し、次のように使用しましたtapply

is.max <- function(x){
  x <- data.frame(x)
  x$x <- round(x$x,5)
  x_max <- round(max(x),5)
  for(i in 1:nrow(x)) {
    if(x$x[i] == x_max) x$is.max[i] <- T
    else x$is.max[i] <- F
  }
return(x$is.max)
}

y <- c(rnorm(10), runif(10), rnorm(10,1))
f <- gl(3,10)
m <- tapply(y,f,is.max)

しかし、それを行うためのより良い効率的な方法はありますか?

{PS実際に私が使用した実際のデータでsapply、たとえばis.maxes<-sapply(s, function(x) is.max(x[,"Sum"]),simplify=F)}

4

1 に答える 1

1

ええ、これを1行で使用できますtapply

tapply(y,f,function(x) round(x,5)==round(max(x),5))
于 2014-02-12T22:16:58.333 に答える