如何使用列中的值从另一列R中提取另一个值

时间:2017-07-10 20:27:38

标签: r dataframe subset

我有一个表格

的数据框
> geneRows[1:3,]
      Probe/gene       logFC       CI.L       CI.R  AveExpr          t   P.Value adj.P.Val
17656  220307_at -0.09017596 -0.4395575 0.25920561 6.104288 -0.5992736 0.5662047         1
37517  220307_at  0.08704844 -0.2613434 0.43544028 6.104288  0.5801327 0.5784053         1
57376  220307_at -0.03501474 -0.1267764 0.05674688 6.152467 -0.7816350 0.4409881         1
              B  gene      GSE             Group1                   Group2  shape color
17656 -5.639256 CD244  GSE2461               Male                   Female x-open black
37517 -5.978691 CD244  GSE2461 ulcerative colitis irritable bowel syndrome x-open black
57376 -5.141940 CD244 GSE27887   nonlesional skin            lesional skin x-open black

我希望对此进行子集化,以便在CI.R列为特定值时可以访问CI.L列。例如,我已尝试

geneRows$CI.R[geneRows$CI.L == -0.4395575]

但是我回来了numeric(0),意思是一个空的向量。但是当我在样本数据集上尝试它时,比如

mtcars$mpg[mtcars$carb==8]

它运作得很好。它们是相同的数据类型和所有内容,那么这里的问题是什么?

背景

我正在创建要添加到plotly地块的线条。

line <- list(
      type = "line",
      line = list(color = "grey"),
      width = 0.2,
      xref = "x",
      yref = "y"
    )

    lines <- list()
    for (i in geneRows$CI.L) {
      line[["x0"]] <- i
      line[["x1"]] <- #here

      lines <- c(lines, list(line))
    }

每行需要从CI.LCI.R。我试图通过起始点从表中获得结束点x1

1 个答案:

答案 0 :(得分:0)

您的数字可能比打印时更精确。例如:

> -0.4395575 == -0.4395575
[1] TRUE
> -0.4395575 == -0.4395575001
[1] FALSE

您可以使用all.equal,默认情况下,其容差为1.5e-8但可以调整。

> all.equal(-0.4395575, -0.4395575001)
[1] TRUE
> all.equal(-0.4395575, -0.4395575001, tolerance = 1e-10)
[1] "Mean relative difference: 2.275015e-10"