【问题标题】:Trying to select 250 lowest terms R试图选择 250 个最低条件 R
【发布时间】:2017-12-30 05:32:51
【问题描述】:

我正在尝试创建一个函数,该函数接受一个集合列表并选择前 250 个最低术语。但是,当我运行完整的代码时,出现了错误,所以我认为错误可能出在函数中选择最低项的某个地方。

代码如下:

selFun <- function(x) 
{x == (order(x, decreasing = FALSE)[1:250])
}

这是我想要实现为 x 的数据列表的一部分:

        TSPAN6           TNMD           DPM1          SCYL3       C1orf112            FGR            CFH 
  9.533633e-01   2.546213e-05   2.868157e-03   2.519265e-02   7.661085e-01   3.308286e-02   7.419554e-09 
         FUCA2           GCLC           NFYA          STPG1         NIPAL3          LAS1L          ENPP4 
  8.119698e-11   3.273434e-03   6.048925e-04   2.264826e-03   2.319325e-02   3.065685e-03   4.675599e-02 

【问题讨论】:

  • 我认为你想要rank 而不是order

标签: r function sorting


【解决方案1】:

你可以使用order

selFun <- function(x) {
  x <- x[order(x, decreasing = FALSE)[1:250]]
  x
}

sort

selFun <- function(x) {
  x <- sort(x, decreasing = FALSE)[1:250]
  x
}

提取最低的 250 个值。

注意:您在 Q 中使用了 x == ....。要为 x 赋值,请使用 &lt;-。如需更多信息,请查看?Comparison?assignOps
此外,您必须在函数中返回结果。这可以通过return(x) 或简单地将对象放在末尾来实现(在这些示例中,我只是将x 放在函数的最后一行)。

测试:

使用 10 值向量(并将返回的位数减少到 5):

x <- 10:1

两个函数都返回

selFun(x)
# [1] 1 2 3 4 5

编辑

如果您想创建一个指示这 250 个最低值的逻辑向量,您可以像这样使用这些值:

x %in% selFun(x)

给出(上面提到的 10 个值的例子):

# [1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE

【讨论】:

  • 我希望前 250 个标记为 true,其余为 false
  • 这就是我使用 == 的原因。但是,只有一个是真实的。我希望 250 以这种方式出来
  • 虽然我认为我明白了
  • 我添加了一个示例来适应您正在寻找的逻辑方法。如果它满足您的需求,您可以接受这个答案。
【解决方案2】:

您也可以使用 dplyr 包和arrange。我真的很喜欢 dplyr 包:

arrange(iris, Petal.Length)[1:10, ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2018-03-16
    • 2021-09-14
    • 1970-01-01
    • 2014-01-05
    相关资源
    最近更新 更多