当前位置: 首页 > 知识库问答 >
问题:

奇怪的行为gtools:mixedorder结合dplyr::arrange?

澹台志诚
2023-03-14

将< code>dplyr::arrange与< code>gtools::mixedorder一起使用时,我注意到了一个意外的结果。

考虑:

library(tidyverse)

test <- data.frame(V1 = c("all13_LG1", "all13_LG10", "all13_LG11",
 "all13_LG12", "all13_LG13", "all13_LG14", "all13_LG15", "all13_LG16",
 "all13_LG2", "all13_LG3", "all13_LG4", "all13_LG5", "all13_LG6",
 "all13_LG7", "all13_LG8", "all13_LG9"),
 V2 = c(rep(1:16)))

test2 <- test %>% arrange(gtools::mixedorder(V1))

test3 <- test %>% slice(gtools::mixedorder(V1))

在test2中,第1列排序“all13_LG1”,“all13_LG3”,“all13_LG4”,“all13_LG5”,“all13_LG6”,“all13_LG7”,“all13_LG8”,“all13_LG9”,“all13_LG10”,“all13_LG11”,“all13_LG12”,“all13_LG13”,“all13_LG14”,“all13_LG15”,“all13_LG16”,“all13_LG2”

而在test3中,列的排序与使用gtools:mixedorder时预期的一样

为什么当我组合排列和混合工具时会发生这种情况?这是一个错误吗?

非常感谢,安妮克

共有2个答案

冀永寿
2023-03-14

我们可以将切片混合排序匹配

library(dplyr)
test %>% 
   slice(match(gtools::mixedsort(V1), V1))

-输出

           V1 V2
1   all13_LG1  1
2   all13_LG2  9
3   all13_LG3 10
4   all13_LG4 11
5   all13_LG5 12
6   all13_LG6 13
7   all13_LG7 14
8   all13_LG8 15
9   all13_LG9 16
10 all13_LG10  2
11 all13_LG11  3
12 all13_LG12  4
13 all13_LG13  5
14 all13_LG14  6
15 all13_LG15  7
16 all13_LG16  8
端木存
2023-03-14

要在排列中使用mixedorderresults,您需要对结果进行 排序。<>

library(dplyr)
test %>% arrange(order(gtools::mixedorder(V1)))

#           V1 V2
#1   all13_LG1  1
#2   all13_LG2  9
#3   all13_LG3 10
#4   all13_LG4 11
#5   all13_LG5 12
#6   all13_LG6 13
#7   all13_LG7 14
#8   all13_LG8 15
#9   all13_LG9 16
#10 all13_LG10  2
#11 all13_LG11  3
#12 all13_LG12  4
#13 all13_LG13  5
#14 all13_LG14  6
#15 all13_LG15  7
#16 all13_LG16  8
 类似资料:
  • 好的,最近我在寻找一种在PowerShell中实现空合并的方法,我遇到了这篇文章:在PowerShells中实现空聚合。 我看到了@Zenexer的评论,很感兴趣。语法如下: 这非常有效。然而,我的一位同事(沃尔特·帕克特)和我非常感兴趣,对语法做了更多的挖掘,发现了一些真正的奇怪之处。 在我进入怪异之前,任何人都可以指出任何解释这种语法的文档吗? 经验教训: < li >测试应该进入数组的最后一

  • 我使用的是mongodb(v2.6.7)和mongo(2.6.7)shell客户端。 我正在尝试使用insert和update命令返回的WriteResult对象。 根据mongodocs,如果出现错误,它将返回一个writeResult对象,其中包含writeError子文档。但我无法在shell或mongo的javascript文件中访问此子文档。 下面是我的问题的说明。 我插入一个对象,并获

  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方

  • 问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么

  • 问题内容: 我正在为一个问题而苦苦挣扎,我不明白为什么它不起作用。如何通过将变量传递并转换为? 为什么在顶部代码段中不起作用,但在行下方的底部代码段中起作用? 唯一的区别似乎是添加了一个额外的变量,该变量也被键入为? 问题答案: 该是一种原始类型,同时是一个普通的Java类。您不能在原始类型上调用方法。但是该方法在上可用,如javadoc中所示 有关这些原始类型的更多信息,请参见此处

  • 问题内容: 为什么的到哪里去了? 问题答案: 删除任何字符,并从字符串的开头和结尾。