重新排序因子会给出不同的结果,具体取决于加载的包

2024-04-17

我想创建一个条形图,其中条形按高度排序,而不是按类别按字母顺序排序。当我加载的唯一包是 ggplot2 时,这工作得很好。然而,当我加载更多的包并运行创建、排序和绘制数据框的相同代码时,条形图已恢复为再次按字母顺序排序。

我每次使用时都会检查数据框str()事实证明,尽管我每次都运行相同的代码,但数据框的属性现在不同了。

下面列出了我的代码和输出。谁能解释不同的行为?为什么加载一些明显不相关的包(不相关是因为我正在使用的函数似乎都没有被新加载的包屏蔽)会改变运行的结果transform()功能?

情况 1:仅加载 ggplot2

library(ggplot2)

group = c("C","F","D","B","A","E")
num = c(12,11,7,7,2,1)
data = data.frame(group,num)
data1 = transform(data, group=reorder(group,-num))

> str(data1)
'data.frame':   6 obs. of  2 variables:
 $ group: Factor w/ 6 levels "C","F","B","D",..: 1 2 4 3 5 6
  ..- attr(*, "scores")= num [1:6(1d)] -2 -7 -12 -7 -1 -11
  .. ..- attr(*, "dimnames")=List of 1
  .. .. ..$ : chr  "A" "B" "C" "D" ...
 $ num  : num  12 11 7 7 2 1

情况 2:再加载几个包,然后再次运行相同的代码

library(plyr)
library(xtable)
library(Hmisc)
library(gmodels)
library(reshape2)
library(vcd)
library(lattice)

group = c("C","F","D","B","A","E")
num = c(12,11,7,7,2,1)
data = data.frame(group,num)
data1 = transform(data, group=reorder(group,-num))

> str(data1)
'data.frame':   6 obs. of  2 variables:
 $ group: Factor w/ 6 levels "A","B","C","D",..: 3 6 4 2 1 5
 $ num  : num  12 11 7 7 2 1

更新:会话信息()

案例 1:加载 ggplot2 后运行 sessionInfo()

> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
  [1] C/en_US.UTF-8/C/C/C/C

attached base packages:
  [1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
  [1] ggplot2_0.9.1

loaded via a namespace (and not attached):
  [1] MASS_7.3-18        RColorBrewer_1.0-5 colorspace_1.1-1   dichromat_1.2-4    digest_0.5.2       grid_2.15.0       
[7] labeling_0.1       memoise_0.1        munsell_0.3        plyr_1.7.1         proto_0.3-9.2      reshape2_1.2.1    
[13] scales_0.2.1       stringr_0.6        tools_2.15.0

情况 2:加载附加包后运行 sessionInfo()

> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
  [1] C/en_US.UTF-8/C/C/C/C

attached base packages:
  [1] grid      splines   stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
  [1] lattice_0.20-6   vcd_1.2-13       colorspace_1.1-1 MASS_7.3-18      reshape2_1.2.1   gmodels_2.15.2  
[7] Hmisc_3.9-3      survival_2.36-14 xtable_1.7-0     plyr_1.7.1       ggplot2_0.9.1   

loaded via a namespace (and not attached):
  [1] RColorBrewer_1.0-5 cluster_1.14.2     dichromat_1.2-4    digest_0.5.2       gdata_2.8.2        gtools_2.6.2      
[7] labeling_0.1       memoise_0.1        munsell_0.3        proto_0.3-9.2      scales_0.2.1       stringr_0.6       
[13] tools_2.15.0

发生这种情况是因为:

  1. gmodels进口gdata
  2. gdata创建一个新方法reorder.factor

开始一个干净的会话。然后:

methods("reorder")
[1] reorder.default*    reorder.dendrogram*

现在加载gdata(或加载gmodels,具有相同的效果):

library(gdata)
methods("reorder")
[1] reorder.default*    reorder.dendrogram* reorder.factor 

请注意,没有屏蔽,因为reorder.factor基地中不存在

重现问题,但这次显式调用不同的包:

group = c("C","F","D","B","A","E")
num = c(12,11,7,7,2,1)
data = data.frame(group,num)

基础 R 版本(使用reorder.default):

str(transform(data, group=stats:::reorder.default(group,-num)))
'data.frame':   6 obs. of  2 variables:
 $ group: Factor w/ 6 levels "C","F","B","D",..: 1 2 4 3 5 6
  ..- attr(*, "scores")= num [1:6(1d)] -2 -7 -12 -7 -1 -11
  .. ..- attr(*, "dimnames")=List of 1
  .. .. ..$ : chr  "A" "B" "C" "D" ...
 $ num  : num  12 11 7 7 2 1

The gdata版本(使用reorder.factor):

str(transform(data, group=gdata:::reorder.factor(group,-num)))
'data.frame':   6 obs. of  2 variables:
 $ group: Factor w/ 6 levels "A","B","C","D",..: 3 6 4 2 1 5
 $ num  : num  12 11 7 7 2 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重新排序因子会给出不同的结果,具体取决于加载的包 的相关文章

  • PHP 5.3 中可以使用 new 作为方法名称吗?

    我很嫉妒 Ruby 使用 new 作为方法 在 PHP 5 3 中是否可以使用命名空间来实现这一点 class Foo public function new echo Hello 如你看到的here http php net manual
  • grid.arrange 中的错误 -rangeGrob() 函数

    我有两个图 p1 和 p2 我试图使用 grid arrage 绘制它们 我的代码如下所示 grid arrange p1 p2 ncol 2 top textGrob Distribution across each day of the
  • R 中的 as.numeric 有什么问题? [复制]

    这个问题在这里已经有答案了 gt X864291X8X74 1 8 0000000000 9 0000000000 10 0000000000 6 0000000000 8 0000000000 10 Levels 0 0000000000
  • 在单个显示器中绘制多个 jpeg 图像

    我需要在单个组合显示器 或画布 中绘制和显示多个 jpeg 图像 例如 假设我有图像 a b c d jpg 每个图像的大小不同 我想将它们绘制在 2x2 网格的一页上 能够为每个子图设置标题也很好 我一直在彻底寻找解决方案 但不知道如何去
  • 删除 R 中具有重复属性的行

    我有一个大数据框 其中包含以下列 ID time OS IP 该数据帧的每一行对应一个条目 在该数据框中对于某些IDs存在多个条目 行 我想删除这些多行 显然 同一 ID 的其他属性会有所不同 或者换句话说 我只想要每个 ID 一个条目 行
  • 获取所有矩阵列逐元素乘积对的快速方法

    假设我有一个数字matrix set seed 1 mat lt matrix rnorm 1000 ncol 100 我想生成所有向量 它们是中所有唯一向量对的逐元素乘积的结果mat 我们如何改进下面的代码 all pairs lt t
  • 按具有作业的组划分的 R 分位数

    我有以下 df group rep seq 1 3 30 variable runif 90 5 0 7 5 df data frame group variable 我需要 i 按组定义分位数 ii 将每个人分配到相对于其组的分位数 因此
  • R-在多个图的外缘绘制居中图例

    我想在具有多个绘图的设备中的绘图区域之外绘制居中图例 SO 中提出了许多关于更改 R 图中图例位置的问题 略有不同 例如 1 R 组合图的通用标题和图例 https stackoverflow com questions 8736966 r
  • 当测试集中不存在响应变量时,h2o 预测有时会失败

    当在不存在响应变量的测试集上进行预测时 如果在训练中对因子变量使用一种热编码 则 h2o 会以各种不同的方式失败 无论是在训练 GLM 时隐式指定还是在其他方法中显式指定时 R 3 4 0 和 h2o 3 12 0 1 中存在此错误 我们还
  • 栅格堆叠后如何写入?

    我想操作几个光栅文件 然后再次写入它们 rasterfiles lt list files C data envi full names TRUE d1 lt overlay stack rasterfiles fun function x
  • 将天气 iframe 嵌入到 Shiny Dashboard 中

    我正在尝试将 Forecast io 的天气预报嵌入到闪亮的仪表板中 我最初在使用 符号时遇到了麻烦 但看到一篇文章提供了如何使用特殊字符格式化 HTML 代码的示例 但是 当我运行该应用程序时 我看到一个简单的 未找到 即使我知道该链接有
  • 将 read.csv 与符号链接文件一起使用

    我正在尝试做什么 我的源文件非常大 我想避免将其复制到其他文件夹中 我决定创建一个指向大文件的符号链接并想使用read csv读取文件 文件夹结构 项目1 数据 源文件 csv 项目2 数据 别名到源文件 csv 什么地方出了错 读取源文件
  • ggplot2 - 添加具有不同中断和标签的辅助 y 轴

    是否可以使用 ggplot2 手动向辅助 y 轴添加中断和标签 see bottom right 我希望在右侧 y 轴上有更紧凑的中断 代表条形 该图将作为基本情况 然后我将展示如何更改辅助 y 轴上的分隔符和标签 sapply c pip
  • kmeans 对分组数据进行聚类

    目前 我尝试在分组数据中找到簇的中心 通过使用示例数据集和问题定义 我能够创建kmeans每个组内的集群 然而 当涉及到给定组的集群的每个中心时 我不知道如何获取它们 https rdrr io cran broom man kmeans
  • 在 mutate 和 across 之后使用 ~separate

    目的是将所有物种 setosa 行转换为一行 setosa 这是一个最小的示例 实际上有更多列和更多组 我有这个数据框 head iris 2 gt select 1 2 5 gt group by Species Sepal Length
  • 使用 data.table 进行分组并选择最短日期

    My Data df1 lt structure list ID c A A A B B C c1 1 6 c2 1 6 myDate c 01 01 2015 02 02 2014 03 01 2014 09 09 2009 10 10
  • 使用管道语法处理模型列表

    我经常喜欢拟合和检查与 R 数据框中的两个变量相关的多个模型 我可以使用如下语法来做到这一点 require tidyverse require broom models lt list hp exp cyl hp cyl map df m
  • 连接多个用户的 R 闪亮会话

    最小可重现示例 library shiny ui lt fluidPage actionButton button1 Run 1 actionButton button2 Run 2 server lt function session i
  • 将日期时间字符串转换为 Date 类

    我有一个带有日期时间字符列的数据框 当我使用as Date 除了少数实例之外 我的大多数字符串都被正确解析 下面的示例有望向您展示发生了什么 my attempt to parse the string to Date uses the s
  • 美人鱼图:调整图表周围的空白

    我在用 Rstudio 编译的 Rmd 报告中使用了美人鱼图 在 HTML PDF 输出中 图表上方和下方有大量空白 请参见下面的示例 Header Text r library DiagrammeR mermaid graph TD cl

随机推荐

  • 对 F# 联合类型列表进行操作

    这是我的问题的延续F 联合类型列表 https stackoverflow com questions 13770911 f list of union types 感谢有用的反馈 我能够创建一个列表Reports with Report要
  • waveOutWrite 和 waveOutGetPosition 死锁问题

    我正在开发一个使用连续播放音频的应用程序waveOut API来自winmm dll 该应用程序使用 leapfrog 缓冲区 它基本上是一堆转储到音频队列中的样本数组 Windows 按顺序无缝播放它们 并且当每个缓冲区完成时 Windo
  • 如何在 2.0 和 1.x 之间切换 TensorFlow 版本?

    有没有办法切换tensorflow的版本 当我使用conda安装tensorflow 2 0时 它更新了很多东西 甚至是python 跑步时conda list它显示两个版本 张量流2 0 0 mkl py37h66b46cc 0张量流 1
  • 测试 AWS Elastic Beanstalk 扩展

    我已经在弹性豆茎中设置了一个服务器 需要时 应该将实例数量从 1 增加到最多 4 但是 我有一个潜在的怀疑 当它启动一个新实例时 该实例将无法正确配置 因为我无法安装用于 Python 的 mySQL 模块 无需 ssh 进入实例并手动设置
  • 如何通过反射加载所有 Entity Framework 4.1 实体配置实体?

    In my OnModelCreating我的数据上下文的方法目前正在手动映射所有实体配置映射类 例如 protected override void OnModelCreating DbModelBuilder modelBuilder
  • 将数据批量插入 Oracle 数据库的最佳方法

    我将创建很多数据脚本 例如 INSERT INTO 和 UPDATE 如果不是 1 000 000 条记录 也会有 100 000 条以上记录 快速将这些数据导入 Oracle 的最佳方法是什么 我已经发现 SQL Loader 不适合这样
  • 解析 LDAP dn 的正则表达式

    我有以下字符串 cn abcd cn groups dc domain dc com 这里可以使用正则表达式来提取第一个之后的字符串吗cn 在第一个之前 在上面的例子中 答案应该是abcd cn 大多数语言会将匹配提取为 1 或 match
  • DOMNodeRemovedFromDocument 的简单 MutationObserver 版本

    我将一些功能附加到 DOM 元素 并希望能够在从 DOM 中删除该元素时清除所有引用 以便可以对其进行垃圾收集 我检测元素删除的初始版本是这样的 var onremove function element callback var dest
  • 控制空格子面板的放置

    当绘制的面板少于完整网格时 您会得到一个没有面板的间隙 大多数格函数将间隙放在右上角 但我希望将其放在右下角 如marginal plot确实 见图 有没有办法让其他晶格函数也能做同样的事情 我知道面板顺序是由调节变量的因子水平的顺序决定的
  • 单击我网站上的任何链接 (a) 时如何运行 jQuery 函数

    我有一个基于 corecommerce 系统的新网站 该系统对 HTML 和 PHP 没有太多访问权限 我唯一可以使用的是 JavaScript 他们的系统目前的页面加载速度不是很好 所以我希望至少客户在等待 5 8 秒页面加载时知道发生了
  • C 中声明后可以初始化数组吗?

    有没有办法在实际初始化变量之前声明这样的变量 CGFloat components 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 我希望它声明类似这样的内容 除非这不起作用 CGFloat components 8
  • 如何通过lcov和代码覆盖率比较来处理不同目录中的.gcda和.gcno文件

    我可以通过 lcov 在同一目录中使用 gcda 文件和 gcno 文件生成 info 文件 但是如何在不同位置使用 gcda 文件和 gcno 文件生成代码覆盖率 例如 Users swd Library Developer Xcode
  • 对一系列点重新采样

    我有一个 3d 点数组 想象一下球的轨迹 有 X 个样本 现在 我想对这些点重新采样 以便我有一个新数组 其中包含 y 个样本的位置 y 可以大于或小于 x 但不能小于 1 始终至少有 1 个样本 将原始数组重新采样为新数组的算法会是什么样
  • 名称冲突:test2 类型的方法 add(Object) 与 HashSet 类型的 add(E) 具有相同的擦除功能,但不会覆盖它

    导入 java util class A extends HashSet
  • 如何在Python中仅在回车符和readlines上进行分割?

    我有一个包含两者的文本文件 n and r n行尾标记 我只想分割 r n 但无法找到使用 python 的 readlines 方法来执行此操作的方法 有一个简单的解决方法吗 正如 eskaev 提到的 如果没有必要 您通常会希望避免将完
  • 如何使用xPages上传控件将上传的文件存储到本地文件系统?

    如何使用xPages上传控件将上传的文件存储到本地磁盘 我的 xPages 上只有一个带有文本字段和 fileUpload 控件的简单表单 没有与文档的绑定 因此我访问 xpages 组件以在提交时获取它们的值 如何从我的 java 代码访
  • 我应该创建代理键而不是复合键吗?

    结构 Actor lt ActorMovie gt Movie ActorMovie ActorID fk MovieId fk gt pk ActorID MovieID 我应该创建一个代理键吗ActorMovie桌子是这样的 Actor
  • iOS Swift - 如何以编程方式为所有按钮分配默认操作

    我正在开发一个处于原型开发阶段的应用程序 某些界面元素没有通过情节提要或以编程方式分配给它们的任何操作 根据用户体验指南 我想在应用程序中找到这些 非活动 按钮 并让它们在测试期间点击时显示 功能不可用 警报 这可以通过 UIButton
  • Javascript 中数组大小如何工作

    在 JavaScript 中 如果将数组设置为大小 5 var foo new Array 5 这只是初始尺寸吗 创建后可以扩展元素数量吗 是否也可以做这样的事情 arr new Array 然后一一分配元素 提前致谢 是的 这只是一个初始
  • 重新排序因子会给出不同的结果,具体取决于加载的包

    我想创建一个条形图 其中条形按高度排序 而不是按类别按字母顺序排序 当我加载的唯一包是 ggplot2 时 这工作得很好 然而 当我加载更多的包并运行创建 排序和绘制数据框的相同代码时 条形图已恢复为再次按字母顺序排序 我每次使用时都会检查