我是相对较新的R,我有一些问题,我想做的一个函数。我有一个表达式表,其中列是物种名称,行是基因id。
exptable:
SPECIES1 SPECIES2 SPECIES3 SPECIES4 SPECIES5 SPECIES6
GENE1 3 3 3 3 3 3
GENE2 2 1 1 5 5 5
GENE3 2 1 1 5 5 5
GENE4 2 1 1 5 5 5
GENE5 2 1 1 5 5 5
GENE6 2 1 1 5 5 5
我也有一个包含感兴趣的基因id的列表。现在我想在一定的条件下提取一些信息。其中一个例子是如果SPEC1和SPEC2都有GENE1>1和SPEC3 - SPEC6 <1那么基因名称应该粘贴在另一个文件
我在这里遇到的两个问题是1.我如何使用一个以generelist作为输入的for look ?我用一个名字做这件事没有问题:
z = "GENEID1"
grep(z,rownames(stage_g)) -> i
exptableB[i,] -> GOI3
as.data.frame(GOI3) -> GOM3
我怎么能做这样的事情与许多基因名称的列表
- 我应用一个条件没有问题。但是我在多个条件下都遇到了一些麻烦。
所以是的,基本上我想写一个循环函数,将多个条件应用于不同基因的表达数据,并将基因名称(rownames)写入一个列表,如果它们是真的…我希望我以一种可以理解的方式陈述了我的问题。如果您需要更多的信息,请告诉我。
%in%
可以用于'矢量化'精确匹配;逻辑运算&
,|
可以帮助组合条件
geneids <- c("GENE1", "GENE6")
row_index_1 <- rownames(exptable) %in% geneids
row_index_2 <- exptable[, "SPECIES3"] - exptable[, "SPECIES6"] < 1
row_index <- row_index_1 & row_index_2
rownames(exptable)[row_index]