我有一个随机顺序的元素列表。我想一次读取一个数据的每个元素,并按排序顺序插入到其他列表中。我想知道如何在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.
答案 0 :(得分:0)
首先,作为指出的评论者,您可以使用sort
或order
。但我相信你正试图解决一项任务。
你的问题是一个错字。尝试在控制台中执行:
lst <- list()
lst == NULL
最后一行计算为一个空长度向量(logical(0)
),其中R没有解释。相反,你对
is.null(lst)
将返回TRUE
或FALSE
。
答案 1 :(得分:0)
对于包含大量列的大型数据集,您可以使用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))