Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
将R中数量不确定的参数传递给order()函数_R_Sorting - Fatal编程技术网

将R中数量不确定的参数传递给order()函数

将R中数量不确定的参数传递给order()函数,r,sorting,R,Sorting,据我所知,R中的order函数可用于按数据帧/矩阵的一列或多列对该对象的行进行排序。列作为单独的参数传递给order,order可以处理数量可变的参数 我想按数据框的所有列对其进行排序,但我事先不知道数据框中的名称或列数。在Python中,可以将对象列表解压为函数的参数(例如,zip(*mylist)iszip(mylist[0]、mylist[1]等))。在R中有类似的方法吗?当我调用order时,最好将矩阵的列“解包” 在R中,除了传递任意数量的参数外,还有其他方法可以按多个列进行排序吗 更

据我所知,R中的order函数可用于按数据帧/矩阵的一列或多列对该对象的行进行排序。列作为单独的参数传递给order,order可以处理数量可变的参数

我想按数据框的所有列对其进行排序,但我事先不知道数据框中的名称或列数。在Python中,可以将对象列表解压为函数的参数(例如,
zip(*mylist)
is
zip(mylist[0]、mylist[1]等)
)。在R中有类似的方法吗?当我调用order时,最好将矩阵的列“解包”

在R中,除了传递任意数量的参数外,还有其他方法可以按多个列进行排序吗

更多想法: 似乎我不能将多个未命名的项目打包成一个对象来传递给order。我也想不到使用for循环、apply或do.call生成任意数量的对象的方法。这里有些东西:

或者。。。我是否应该编写一个for循环来调用每一列的order,从优先级最低的一列开始,以第一个order参数的列结束,每次对行重新排序,并确保order排序稳定


谢谢。

在python中调用
fun(*args,**kwargs)
指定位置参数(
*args
)和按名称匹配的参数(
kwargs
)的列表

R中类似的调用是
do.call(fun,arglist)
。与python不同,您不能混合使用常规参数和特殊参数(例如
fun(a=1,*args)
),而
do.call的第二个参数可以包含按名称或位置匹配的元素(例如
do.call(fun,list(2,x=3))


为了完成该示例,由于data.frames继承自列表,您只需调用“order(df)”即可按顺序对所有列进行排序(只要data.frames中的字段名称都不匹配order“na.last”和“discreating”的形式参数)

请查看
example(order)
。在R中有很多有用的例子,
zip(*mylist)
将是
do.call(“zip”,mylist)
我写问题时不太理解do.call的用法,所以谢谢。在示例(order)中,有一个成语解决了我的问题:df[do.call(order,df),]