如何在 r 中创建排序向量

How to create a sorted vector in r

我有一个随机顺序的元素列表。我想一次读取此数据的每个元素并按排序顺序插入其他列表。我想知道如何在 R 中执行此操作。我尝试了以下代码。

lst=list()
x=c(2,3,1,4,5)
for(i in 1:length(x)) ## for reading the elements from x
 {
    if(lst==NULL)
    {
        lst=x[i]
    }
    else
    {
        lst=x[i]
        print(lst)  
        for(k in 2: length(lst)) ## For sorting the elements in a list
        {

            value = lst[k]
            j=k-1   
            while(j>=1 && lst[j]>value)
            {
                lst[j+1] = lst[j]  
                j= j-1
            }
            lst[j+1] = value
        }
    }

    print(lst)
}

但是我得到了错误

error in if (lst == NULL) { : argument is of length zero.

首先,正如评论者指出的那样,您可以使用 sortorder。但我相信你正在尝试解决作业。

你的问题是一个错字。尝试在控制台中执行:

lst <- list()
lst == NULL

最后一行的计算结果为 R 无法解释的空长度向量 (logical(0))。相反,您感兴趣的是

is.null(lst)

这将 return TRUEFALSE

对于包含大量列的大型数据集,您可以使用 do.call

df1 <- df[do.call(order, df),]

通过指定列名检查order

df2 <- df[with(df, order(V1, V2, V3, V4)),]
identical(df1,df2)
#[1] TRUE

如果需要order反方向

df[do.call(order, c(df,decreasing=TRUE)),]

数据

set.seed(24)
df <- as.data.frame(matrix(sample(letters,10*4,replace=TRUE),ncol=4))