我想根据逻辑条件从 data.frame 过滤行。让我们假设我有像这样的数据框

   expr_value     cell_type
1    5.345618 bj fibroblast
2    5.195871 bj fibroblast
3    5.247274 bj fibroblast
4    5.929771          hesc
5    5.873096          hesc
6    5.665857          hesc
7    6.791656          hips
8    7.133673          hips
9    7.574058          hips
10   7.208041          hips
11   7.402100          hips
12   7.167792          hips
13   7.156971          hips
14   7.197543          hips
15   7.035404          hips
16   7.269474          hips
17   6.715059          hips
18   7.434339          hips
19   6.997586          hips
20   7.619770          hips
21   7.490749          hips

我想要的是获得一个看起来相同但只有一种 cell_type 的数据的新数据框。例如。子集/选择包含单元格类型“hesc”的行:
   expr_value     cell_type
1    5.929771          hesc
2    5.873096          hesc
3    5.665857          hesc

或者细胞类型“bj 成纤维细胞”或“hesc”:
   expr_value     cell_type
1    5.345618 bj fibroblast
2    5.195871 bj fibroblast
3    5.247274 bj fibroblast
4    5.929771          hesc
5    5.873096          hesc
6    5.665857          hesc

有什么简单的方法可以做到这一点吗?

我试过了:
expr[expr[2] == 'hesc']
# [1] "5.929771" "5.873096" "5.665857" "hesc"     "hesc"     "hesc"

如果原始数据框被称为“expr”,但如您所见,它以错误的格式给出结果。

最佳答案

要根据一个“cell_type”(例如“hesc”)选择行,请使用 == :

expr[expr$cell_type == "hesc", ]

要根据两个或多个不同的“cell_type”(例如“hesc”或“bj 成纤维细胞”)选择行,请使用 %in% :
expr[expr$cell_type %in% c("hesc", "bj fibroblast"), ]

关于r - 按逻辑条件过滤 data.frame 行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1686569/

10-12 20:36