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

如何使用列中的值从另一列R中提取另一个值,r,dataframe,subset,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.26134

我有一个表格的数据框

> 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.L
列为某个值时,我就可以得到
CI.R
列。例如,我试过

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

但是我得到了
数值(0)
,意思是一个空向量。然而,当我在一个样本数据集上尝试它时

mtcars$mpg[mtcars$carb==8]

它很好用。它们是相同的数据类型和所有东西,那么这里的问题是什么

背景

我正在创建要添加到
plotly
plot的线

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))
    }

line您的数字可能比打印的数字精度更高。例如:

> -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"

你能检查一下每列的类别吗?它是数字的吗?是的,
CI.L
CI.R
都是数字的
dplyr::filter
filter(granows,CI.L==-0.4395575)
=
测试小数位数是个坏主意。例如:
0.1+0.05==0.15
为FALSE。这真的是你在这种情况下需要的吗?@KyleWeise那么你应该后退一步,描述一下你真正想要解决的问题。您可以直接提取这两列;不需要从另一个向上看。似乎是一个例子