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

想想算法。一种选择是从向量的第一个元素作为目标开始,然后将其与第二个元素进行比较。如果第二个小于目标,则将目标设置为第二个元素。对元素 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 回答