r - 将函数中的向量排序为另一个向量
问题描述
>nuevos<-(exam[411:510,1])
> [,1]
401 -0.325087210
402 0.576824342
403 0.314110438
404 -0.710141482
405 0.079179458
406 0.876819478
407 -0.563755647
408 -0.024573542
409 0.072860869
410 0.141759722
411 0.645346837
412 -0.178754696
413 -0.745086021
414 0.741761201
415 1.537360962
416 0.478560270
417 -0.721503050
418 -0.136435690
419 -0.264058207
420 1.851815905
421 0.854542022
422 0.055184071
423 0.214454147
424 -0.374941314
425 0.268580192
426 0.458531169
427 0.440158449
428 -1.539627467
429 -0.146698388
430 -0.174844929
这是我的数据,它是一个矩阵。第一列是 ID,第二列是 X 值。我想选择 10 个 ID。在选择的10个中,5个应该来自unpair number ID,另外5个应该来自ood number ID。10个ID的选择应该是从X值开始起作用的(负值最大的最好)。我想要这样的东西:
ID X
428 -1.539627467
413 -0.745086021
....
我尝试使用sort(data[data%%2==1])[1:5]
,但我不明白如何从数据集中提取列 ID,因为这是线性模型的结果,所以 R 给了我位置,但我想使用这个位置和 X 值。请帮我!
谢谢。
解决方案
根据我认为您想要做的事情,这是一个工作示例,给出以下数据框:
# generate random input data
data <- data.frame(ID=1:20, X=rnorm(20))
Tidyverse 提供了最干净的解决方案:
require(tidyverse)
data %>%
arrange(X)
将根据 x 列升序排序。检查文档以获取更多详细信息;您可以做更复杂的事情,例如按组排序、对多列排序(即,指定第一列,并根据连续排序的列打破平局等)。因此,我建议先将您的数据放入数据框中:
data <- data.frame(ID=rownames(nuevos), X=nuevos[,1])
您可以在其中将 ID 替换为您想要的任何内容,然后执行上述操作。添加 adput
以nuevos
获得更具体的反馈。请注意,在不涉及 tidyverse 的情况下,有上百万种方法可以做到这一点(例如,按照您提到的排序);在我看来,tidyverse 只是倾向于打造最干净、最简单的机制(因为它可以与许多其他有用的东西即插即用,例如ggplot
,dplyr
等),并且确实是习惯于使用数据框的一种很好的思维方式,像这样。
推荐阅读
- flutter - 在 Flutter 中更新文本小部件
- ios - 更改单个标签栏图标的 unselectedItemTintColor
- javascript - 尝试从 react js fetch 命令访问节点 js req.session 时不起作用
- python - 检查令牌(在熊猫列上)是否在三元组的外部列表中
- python - 条件返回查询
- laravel - 创建变量 laravel
- java - 如何将事件中心输出构建到 Java 函数并将消息捕获到存储?
- java - 使用 Loopj 实现向主线程返回 Http 响应开始新的活动(意图)
- python-3.x - 在 python 列表中反转未按预期工作
- c++ - 如何从 C 调用 C++ 函数?