【问题标题】:How to use AND in R to modify dataframe如何在 R 中使用 AND 来修改数据框
【发布时间】:2016-07-19 10:27:30
【问题描述】:

我有一个数据矩阵 1200(行,样本名称)* 20000(列,基因名称),当我感兴趣的 5 个基因在所有样本中的值为零时,我想删除行

我用于单基因的命令:

allexp <-preallexp[preallexp$GZMB > 0, ]

但我想在上面的命令中使用 AND,像这样:

allexp <-preallexp[preallexp$GZMB && preallexp$TP53 && preallexp$EGFR && preallexp$BRAF && preallexp$VGEF > 0, ]

但是这个命令不起作用,我需要你的帮助..如何在上面的命令中使用 AND。

【问题讨论】:

  • &amp;&amp; 只返回条件的第一个逻辑结果,你应该使用&amp;(单和号)你应该每次都重复条件,即preallexp$GZMB &gt; 0 &amp; preallexp$TP53 &gt; 0 &amp; ...
  • 谢谢,digEmAll,但是我想如果5个基因的总和为零,那么删除行,对不起我上面没有提到。

标签: r


【解决方案1】:

编辑:响应 OP。 我确信有一种更有效的方式来编写代码,但这就是你所追求的:

allexp <-preallexp[preallexp$GZMB + preallexp$TP53 + preallexp$EGFR + 
                     preallexp$BRAF + preallexp$VGEF > 0, ]

【讨论】:

  • 感谢 mkt,此代码只是在每个基因的值为 0 时删除行,但如果行中 5 个基因的总和为零,我想删除行。
  • 奇数。你能发布一个可重现的例子吗?
【解决方案2】:

除非您有负表达式值,否则我会认为 mkt 应该可以工作。但这里是我的。它将删除 5 个基因中的每一个和值为 0 的值行

which(preallexp$GZMB == 0 && preallexp$TP53 && 
 preallexp$EGFR == 0 && preallexp$BRAF == 0 && preallexp$VGEF == 0)

这给出了所有 5 个基因的值都为零的行

所以我们可以从数据框中删除这些行,如下所示

allexp <-preallexp[
   -(which(preallexp$GZMB == 0 && preallexp$TP53 && 
     preallexp$EGFR == 0 && preallexp$BRAF == 0 && preallexp$VGEF == 0)), ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2021-03-20
    • 2011-05-18
    • 1970-01-01
    • 2021-06-04
    • 2015-02-23
    • 1970-01-01
    相关资源
    最近更新 更多