我已经收集到R中的顺序函数可用于按该对象的一列或多列对数据帧/矩阵的行进行排序。这些列作为单独的参数传递给order,order可以处理可变数量的参数。
我想按其所有列对数据框进行排序,但我事先并不知道数据框中的名称或列数。在Python中,可以将对象列表解压缩为函数的参数(例如zip(*mylist)
为zip(mylist[0], mylist[1], etc...)
)。在R中有类似的方法吗?当我打电话给订单时,“解包”矩阵的列会很好。
除了传递任意数量的参数外,R中还有另一种方法可以按多列排序吗?
更多想法: 似乎我不能将多个未命名的项目打包到单个对象中以传递给订单。我也不能想到使用for循环,apply或do.call来制作任意数量的对象的方法。这里有一些东西:http://r.789695.n4.nabble.com/custom-sort-td888802.html。
或者......我应该在每列上写一个for循环来调用顺序,从最低优先级一开始,到作为第一个要排序的参数的列结束,每次重新排序行并确保该订单稳定分类?
感谢。
答案 0 :(得分:3)
调用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从列表继承,您只需调用&#39; order(df)&#39;按顺序对所有列进行排序(只要data.frame中的字段名称都不符合订单的正式参数&na;'&gt;和&#39;&#39;&#39;)< / p>