Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用for循环对数据进行排序?_R_Sorting_Loops - Fatal编程技术网

如何使用for循环对数据进行排序?

如何使用for循环对数据进行排序?,r,sorting,loops,R,Sorting,Loops,我想知道如何使用循环(可能是for循环)对如下数据进行排序 [,1] [1,] 179 [2,] 160 [3,] 136 [4,] 227 [5,] 217 [6,] 168 [7,] 108 [8,] 124 [9,] 143 [10,] 140 我尝试使用这样的循环: for (i in 1:nrow(v)) { for (j in i+1:nrow(v)) { if (v[i] > v[j]) { v[i] <- v[j]

我想知道如何使用循环(可能是for循环)对如下数据进行排序

      [,1]
 [1,]  179
 [2,]  160
 [3,]  136
 [4,]  227
 [5,]  217
 [6,]  168
 [7,]  108
 [8,]  124
 [9,]  143
[10,]  140
我尝试使用这样的循环:

for (i in 1:nrow(v)) {
for (j in i+1:nrow(v)) {
if (v[i] > v[j]) {
v[i] <- v[j]
}
else {
v[i] <- v[i]
}
}
}
v

我知道通过使用顺序来实现这一点非常简单,但作为R的初学者,我很好奇如何通过循环来实现这一点。希望有人能帮忙。谢谢大家!

简单的答案是不要,因为
sort.list
使用内部优化的代码更有效地实现数字排序算法

您需要决定要使用的排序方法。 请参阅以获得一个好的摘要

每个排序算法都有可转换为R的伪代码

下面是bubbleSort的一个实现,它实现了

R
中,这看起来像

set.seed(1)
A <- sample(10)
A

##  [1]  3  4  5  7  2  8  9  6 10  1


n <- length(A)

repeat {
    swapped = FALSE
    for (i in 2:length(A)) {
        newA <- A
        if (A[i - 1] > A[i]) {
            newA[i - 1] <- A[i]
            newA[i] <- A[i - 1]
            A <- newA
            swapped <- TRUE
        }
    }
    if (!swapped) {break}
}
# ta da!
A

##  [1]  1  2  3  4  5  6  7  8  9 10
set.seed(1)

签出
排序
排名
顺序
。您可以从
>help(sort)
中看到帮助文件实际上,我正在尝试在if语句之后显示express
for(i-in-nrow(v)){for(j-in-i+1:nrow(v)){if(v[i,1]>v[j,1]){expression}}}
。很抱歉。。。
procedure bubbleSort( A : list of sortable items )
   repeat     
     swapped = false
     for i = 1 to length(A) - 1 inclusive do:
       /* if this pair is out of order */
       if A[i-1] > A[i] then
         /* swap them and remember something changed */
         swap( A[i-1], A[i] )
         swapped = true
       end if
     end for
   until not swapped
end procedure
set.seed(1)
A <- sample(10)
A

##  [1]  3  4  5  7  2  8  9  6 10  1


n <- length(A)

repeat {
    swapped = FALSE
    for (i in 2:length(A)) {
        newA <- A
        if (A[i - 1] > A[i]) {
            newA[i - 1] <- A[i]
            newA[i] <- A[i - 1]
            A <- newA
            swapped <- TRUE
        }
    }
    if (!swapped) {break}
}
# ta da!
A

##  [1]  1  2  3  4  5  6  7  8  9 10