我想data.frame根据逻辑条件从 a 中过滤行。假设我有像这样的数据框
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 fibroblast”)选择行,请使用%in%:
%in%
expr[expr$cell_type %in% c("hesc", "bj fibroblast"), ]