0

これは私が持っているものですが、それが機能していないため、明らかに私はそれをすべて間違っています:-\

set.seed(1)    
x <- runif(25)

sort<-function(x) {
   for(last in length(x):2) {
      for (first in 1: (last-1)) {
         save<-x[first]
         x[first]<-x[first + 1]
         x[first+1]<-save
      }
   }
   return(x)
}
4

1 に答える 1

1

アルゴリズムを考えてみてください。1 つのオプションは、ベクトルの最初の要素をターゲットとして開始し、それを 2 番目の要素と比較することです。2 番目がターゲットより小さい場合は、ターゲットを 2 番目の要素に設定します。要素 3 から n までターゲットを使用してこの比較を繰り返します。n はベクトルの長さです。

findMin <- function(x) {
  minX <- x[1] ## set target to first element of `x`
  for (i in (seq_along(x[-1]) + 1)) { ## i take values 2, 3, ..., length(x)
    if(x[i] < minX) ## do comparison with current target
      minX <- x[i]  ## if element i is smaller than target, update target
  }
  minX
}

> set.seed(1)
> vec <- runif(20)
> min(vec)
[1] 0.06178627
> findMin(vec)
[1] 0.06178627

なぜこれをやりたいのかは私には理解できず、結果はばかげた非効率的な R コードになりますしかし、(私が思うに) これは、少なくとも Q のタイトルが要求するものです。

于 2013-02-15T02:28:30.733 に答える