全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
9946 6
2016-03-23
向大家请教一个问题:
现给定一个矩阵,若要将各列按升序或降序排列,如
a
     [,1] [,2]
[1,]    1    2
[2,]    2    3
[3,]    2    1
[4,]    1    2
[5,]    2    3
[6,]    3    2

,可以用a[order(a[,1],a[,2]),]来实现。但实,如果矩阵的列数有很多呢(或者列数是后来计算出来的值)?只能一个一个指定嘛?还是有其他简洁的方法?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-3-23 17:52:08
没看懂你的意思。

如果列太多,例如有20个列,那么这样排序是很耗时的,当然你非要做的话也可以:

例如你想将data按前20列排序
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-23 20:07:04
万人往LVR 发表于 2016-3-23 17:52
没看懂你的意思。

如果列太多,例如有20个列,那么这样排序是很耗时的,当然你非要做的话也可以:
谢谢您的解答~
就是说首先根据第一列的值排序,若第一列值相同,按第二列排序;如此直到最后一列;上述例子中结果应为:
    [,1] [,2]
[1,]    1    2
[2,]    1    2
[3,]    2    1
[4,]    2    3
[5,]    2    3
[6,]    3    2
上述实现时我是指定了对矩阵a的1-2列进行排序,即:a[order(a[,1],a[,2]),],想知道若是多列的时候有没有其他方法?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-23 22:32:01
以下代码,可以实现你的需求,不过需要把dd矩阵转化成data.frame才能用order进行
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-24 10:03:57
jiangbeilu 发表于 2016-3-23 22:32
以下代码,可以实现你的需求,不过需要把dd矩阵转化成data.frame才能用order进行
谢谢答疑~~
再向您请教一个问题~现在想发现矩阵中不同的行,如:
     [,1] [,2]
[1,]    1    2
[2,]    1    2
只返回【1 2】这一行。
有木有简单点的方法?我现在是自己写了个函数,通过逐行比较实现的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-24 10:17:56
呵呵哼哼哈哈 发表于 2016-3-24 10:03
谢谢答疑~~
再向您请教一个问题~现在想发现矩阵中不同的行,如:
     [,1] [,2]
再学习一下duplicated的用法,就知道怎么处理了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群