- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难理解 reorder()
背后的逻辑。
假设 Var
定义如下:
Var <- factor(c(0.2, 0.1, -0.1))
order(Var)
现在,如果我想将它重新排序为 c(1, 2, 3),我将运行以下代码,它工作得很好。
Needed_Order <- c(1, 2, 3)
Var <- reorder(Var, Needed_Order)
order(Var)
但是如果我想将 Var
重新排序为 c(3, 1, 2) 则它不起作用
Needed_Order <- c(3,1,2)
Var <- reorder(Var, Needed_Order)
order(Var)
我希望得到 3 1 2
作为 order(var)
的输出,但它返回 2 3 1
。
最佳答案
我认为@prosoitos 已经有了很好的答案。我只是想说明为什么存在 reorder
函数及其用途。
让我们考虑经典的 iris
数据集
> data(iris)
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
假设我们要绘制 Sepal.Width
值,按 Species
boxplot(Sepal.Width ~ Species, iris)
但这里的顺序是按物种名称排序,而我们认为如果按每个物种的平均萼片宽度排序,绘图会更好看。这就是 reorder
是一个快速、强大的解决方案的地方:
iris$Species <- reorder(iris$Species, iris$Sepal.Width, FUN=mean)
boxplot(Sepal.Width ~ Species, iris)
这里发生的事情是 iris$Sepal.Width
对应于 iris$Species
中每个级别的值都应用了函数 mean
它们和结果作为 scores
属性附加到该因素:
> attr(iris$Species, 'scores')
setosa versicolor virginica
3.428 2.770 2.974
然后使用这些分数对因素中的水平进行排名(按升序排列),并按该顺序分配它们:
> levels(iris$Species)
[1] "versicolor" "virginica" "setosa"
请注意,这不会更改数据框中任何数据 的顺序,只会更改因子中使用的代码的顺序。 FUN
参数使 reorder
函数非常通用,因此可以按最小值或最大值或您想要对分组数据计算的任何函数进行排序。
总的来说,我认为关键是 reorder
函数中的第二个参数,它被认为是一个期望的顺序,而是用于输入与每个条目相关的权重或值因素。
关于r - `reorder()` 中 `R` 背后的逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53423360/
这是对 Reordering factor gives different results, depending on which packages are loaded 的跟进,还有另一个相关问题。
我最近一直在摆弄数组和数组排序,并偶然发现了一些奇怪的东西。 以这种情况为例: arr = {}; arr[1] = "one"; arr[2] = "two"; arr[105] = "three"
题目地址:https://leetcode.com/problems/reorder-list/description/ 题目描述: Given a singly linked list L: L
我使列表可重新排序,但现在又回到了初始状态。有人能帮我吗?我的列表包含列表磁贴,它是使用Asynsnapshot从数据库生成的。我使用的键与索引相同。似乎insert函数没有在新索引中插入注释。是因为
我很困惑为什么箱线图在此图中没有排序: set.seed(200) x <- data.frame(country=c(rep('UK', 10),
我有一个或多或少作为列表显示给用户的实体列表。现在,用户不仅可以添加或删除实体,还可以对现有实体重新排序(使用典型的“向上”、“向下”、“转到顶部”、“转到底部”操作)。 但是实现这种行为的最佳方式是
我正在尝试使用 Bootstrap 3 制作如下所示的网格。 目标 SM 医学博士 方法一 Content1
我有如下表格, | id | name | color | ------+--------+--------- | 1 | pear | green | | 2 | apple
似乎对 SQLite3 表中的列进行重新排序并不简单。至少 Firefox 中的 SQLite Manager 不支持此功能。例如,将 column2 移动到 column3,将 column5 移动
我的抽屉导航中列出了许多页面/fragment ,用户可能会经常在这些页面/fragment 之间切换,我希望它们在后台堆栈中以便他们可以导航回来,但我只想要每个 fragment 的一个实例后台堆栈
当我添加一段代码来测量 CPU 执行时间时,例如: int main() { clock_t init_time = clock(); // (1) your_fun(); // (2)
当用户更改顺序时,我需要同步两个 ListViews 事件的列顺序。但似乎没有列重新排序事件。 目前我只是做了一个 AllowsColumnReorder="False"但这不是一个永久的解决方案。在
我很难理解 reorder() 背后的逻辑。 假设 Var 定义如下: Var data(iris) > head(iris) Sepal.Length Sepal.Width Petal.Le
我正在创建一个 WPF 数据网格,我希望能够通过拖放重新排序行,如下所示:我单击一行并将其向上或向下拖动。正如我所做的那样,如果我释放鼠标,一个标记会显示行将被放置的位置。当我释放鼠标时,拖动的行被插
我想重新排序我的列表,但出现此错误。 此小部件的所有子项都必须在 Reorderable Listview 中有一个键 Widget list(list) { return Scrollbar
我想重新排序我的列表,但出现此错误。 此小部件的所有子项都必须在 Reorderable Listview 中有一个键 Widget list(list) { return Scrollbar
在我的数据库中我有如下三个表: 任务(TaskID、TaskName、TaskDescription) TaskDetails(TaskID、subTaskPosition、SubTaskID) 子任
我仍在使用 https://github.com/syntagmatic/parallel-coordinates#parallel-coordinates 绘制平行坐标图和 d3.js 轴重新排序后
我正在阅读Kyle Simpson's book (You don't Know JS - ES6 and beyond)他给出了有关重新排序数组的示例: var a1 = [ 1, 2, 3 ],
我的领域对象: public class MyDomainObject { public Guid Id { get; set; } public string Name { get;
我是一名优秀的程序员,十分优秀!