r - 了解 R 中的 "reorder"如何工作

标签 r ggplot2

给定 /tmp/thefile.csv(CSV 文件)中的以下数据:

AA,12
AB,1
BA,2

以及以下R代码:

v = read.csv('/tmp/thefile.csv', header=F)
library('ggplot2')
v$V3 = reorder(v$V1, v$V2)
ggplot(v, aes(x=v$V3, y=v$V2), stat='identity') + geom_bar(fill='dark grey', stat="identity")

该图按升序显示条形,这就是我想要的。如果没有reorder行,绘图将根据因子按字母顺序显示。

但是:

> v
  V1  V2  V3
1 AA  12  AA
2 AB   1  AB
3 BA   2  BA

表明顺序仍然是字母顺序。 ggplot 如何知道数字顺序?

最佳答案

如果您查看v$V3,您会得到以下(print)输出:

[1] AA AB BA
attr(,"scores")
AA AB BA 
12  1  2 
Levels: AB BA AA

在最底行,您可以找到指定的级别顺序。

使用levels函数可以更轻松地获取此信息:

levels(v$V3)
[1] "AB" "BA" "AA"

函数reorder不会更改向量中的值(或其顺序),但会设置(更改)级别分数属性来指示因子级别的顺序:

attributes(v$V3)
$levels
[1] "AB" "BA" "AA"

$class
[1] "factor"

$scores
AA AB BA 
12  1  2 

关于r - 了解 R 中的 "reorder"如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14211872/

相关文章:

regex - 在R中的字符串中用 "+-"替换 "-"

R包“JM”: missing value where TRUE/FALSE needed

r - 检查 R 中的 URL 是否为 "exist"

r - 如何导出叶节点(rpart)的标准差?

R ggtree : How to label single tree tip with ggtree similar to labeling nodes with geom_cladelabel

r - 在 ggplot 中按因子生成多个图

r - 将包含同名对象的多个 .RData 文件合并为一个 .RData 文件

r - 切换facet_grid标签的位置

r - 仅在一个方面使用 ggplot 的注释

删除图 pf ggplot2 内的边距