是否有R函数使用两列或多列对矩阵进行排序?

是否有R函数使用两列或多列对矩阵进行排序?,r,R,我模拟了3列数据 aa <- rep(seq(0,1,0.05), seq(21,1,-1)) bb <- NA for(i in length(seq(0,1,0.05)):1){ bb <- c(bb,rep(seq(0,1,0.05),len = i)) } bb <- bb[-1] cc <- 1-(aa+bb) Dominance <- cbind(aa,bb,cc) 结果我得到了这个 [1,] 0.00 0.

我模拟了3列数据

aa <- rep(seq(0,1,0.05), seq(21,1,-1))
  bb <- NA
  for(i in length(seq(0,1,0.05)):1){
    bb <- c(bb,rep(seq(0,1,0.05),len = i))
  }
  bb <- bb[-1]  
  cc <- 1-(aa+bb)
Dominance <- cbind(aa,bb,cc) 
结果我得到了这个

  [1,] 0.00 0.00 1.00
  [2,] 0.00 0.00 1.00
  [3,] 0.00 0.00 1.00
  [4,] 0.00 0.05 0.95
         ...
  [59,] 0.00 0.50 0.50
  [60,] 0.00 0.50 0.50
  [61,] 0.05 0.35 0.60
  [62,] 0.05 0.35 0.60
  [63,] 0.05 0.05 0.90
  [64,] 0.05 0.05 0.90
问题从第61行开始,在第一列0.05和第二列0.35中,但在第63行,第一列0.05中的值相同,但在第二列中的值小于0.35

有什么想法吗


我尝试过使用另外两个函数,但它们得到了相同的结果。

使用tidyverse方法,简单如下:

library(tidyverse)
data %>% 
  as_tibble() %>% 
  arrange(aa,bb) %>%
  as.matrix()

希望有帮助

对不起,我刚刚修改了代码。aa是第一列,它现在在代码中。非常感谢。数据和支配地位是一回事吗?我真的不明白你想用for循环做什么。尝试跳过它,创建数据,然后调用订单行。这不是你想要的方式吗?是的,数据和支配地位是一回事。很抱歉出现此错误,我正在尝试修复代码并获取此错误。所以,我使用了这个循环,因为如果我有一行包含0.5,0.5,0.90和一行包含0.9,0.5,0.5,它们对我来说代表相同的东西。因此,我首先对每一行进行排序,然后对列进行排序。请解释您想要的内容并显示正确的答案。我希望此输出为0.00 0.00 1.00 0.00 0.00 1.00 0.00 0.05 0.95 0.00 0.05 0.95。。。。0.00 0.10 0.90 ... 0.00 0.50 0.50 0.05 0.05 0.90 .... 看第一列,当我们看到从0.00到0.05的转换时,行应该是0.05 0.05 0.90,但是结果显示0.05 0.35 0.60如果OP想要的是数据帧,这很好,但是他们没有指出。他们的输出仍然是矩阵%>%as.matrix HAHAHATHANK您很多,但代码不起作用。我可以很容易地用excel做我想做的事情,但我真的很好奇数据排序不正确的原因。让我们看看你的正确答案。我发现此代码适用于我在您的问题中理解的内容。我希望此输出为0.00 0.00 1.00 0.00 0.00 1.00 0.00 0.00 1.00 0.00 0.05 0.95 0.00 0.05 0.95。。。。0.00 0.10 0.90 ... 0.00 0.50 0.50 0.05 0.05 0.90 .... 在第一列中,当我们看到从0.00到0.05的转换时,该行应为0.05 0.05 0.90,但结果显示为0.05 0.35 0.60
  [1,] 0.00 0.00 1.00
  [2,] 0.00 0.00 1.00
  [3,] 0.00 0.00 1.00
  [4,] 0.00 0.05 0.95
         ...
  [59,] 0.00 0.50 0.50
  [60,] 0.00 0.50 0.50
  [61,] 0.05 0.35 0.60
  [62,] 0.05 0.35 0.60
  [63,] 0.05 0.05 0.90
  [64,] 0.05 0.05 0.90
library(tidyverse)
data %>% 
  as_tibble() %>% 
  arrange(aa,bb) %>%
  as.matrix()