使用R从数据框中选择负值

时间:2016-10-15 15:25:47

标签: r dataframe

我有以下名为data.frame的{​​{1}}:

best100_gene

我想只选择best100_gene的行。我尝试了以下命令:

Data_PCA$ind$coord[, 2] < 0

但它不起作用!我尝试了其他几个选项,但它们也没有用。

2 个答案:

答案 0 :(得分:1)

best100_gene <- data.frame(
  SYMBOL=c("A", "b", "c", "d", "e"),
  Data_PCA_contrib=c(.26,.25,.36,.11,.35),
  "Data_PCA$ind$coord[, 2]"=c(12,15,-11,-11,-11)
)

以下是基于屏幕截图的示例数据:

  SYMBOL Data_PCA_contrib Data_PCA.ind.coord...2.
1      A             0.26                      12
2      b             0.25                      15
3      c             0.36                     -11
4      d             0.11                     -11
5      e             0.35                     -11

这是一种方式,我强烈建议使用疯狂的列名:

best100_gene[best100_gene[3] < 0, ]
  SYMBOL Data_PCA_contrib Data_PCA.ind.coord...2.
3      c             0.36                     -11
4      d             0.11                     -11
5      e             0.35                     -11

这是另一种方式:

best100_gene[best100_gene$Data_PCA.ind.coord...2. < 0, ]
  SYMBOL Data_PCA_contrib Data_PCA.ind.coord...2.
3      c             0.36                     -11
4      d             0.11                     -11
5      e             0.35                     -11

这是另一种方式:

good_names             <- c("symbol", "pca_contrib", "pca_coord")
colnames(best100_gene) <- good_names
best100_gene[best100_gene$pca_coord<0, ]
  symbol pca_contrib pca_coord
3      c        0.36       -11
4      d        0.11       -11
5      e        0.35       -11

答案 1 :(得分:1)

甚至很难创建像你这样的数据。如果我们想要创建名称包含pip install facebook-sdkcheck.names=FALSE的数据框,并使用反向标记$来保护奇怪的名称,我们需要[ ...

`

这是你最想要的......

 best100_gene <- data.frame(
    SYMBOL=c("A", "b", "c", "d", "e"),
    Data_PCA_contrib=c(.26,.25,.36,.11,.35),
    `Data_PCA$ind$coord[, 2]`=c(12,15,-11,-11,-11),check.names=FALSE)

您也可以使用

 best100_gene[best100_gene[,"Data_PCA$ind$coord[, 2]"]<0,]

 subset(best100_gene,`Data_PCA$ind$coord[, 2]`<0)

 with(best100_gene,best100_gene[`Data_PCA$ind$coord[, 2]`<0,])

最好将列名重命名为更容易处理的内容,例如

 dplyr::filter(best100_gene,`Data_PCA$ind$coord[, 2]`<0)

或者,更好的是,在您的工作流程中再往前看,看看奇怪的名字来自哪里。