以下回答由ChatGPT提供
首先,您在 for 循环中没有指定列名或行名,因此 genomeX 和 geneY 可能不是您想要的行和列的名称。您应该指定枚举的行和列的名称,例如:
for (genomeX in rownames(genomeID)) {
for (geneY in colnames(genomeID)) {
...
}
}
其次,在 ifelse 语句中,你使用了变量 geneY 作为一个字符串,而不是一个变量。因此,您应该把它改为:
ifelse(geneY %in% gene_to_ko[[genomeX]],
genomeID[genomeX,geneY]<-1,
genomeID[genomeX,geneY]<-0)
注意,这里使用了 [[]] 操作符来访问 gene_to_ko 中的某一列,而不是 $ 操作符。
最后,这段代码会在 genomeID 中修改列的值,但是并没有对 gene_to_ko 进行任何操作。如果您想修改 gene_to_ko 中的列的值,您可以在 ifelse 语句中使用 gene_to_ko 中的列,例如:
ifelse(geneY %in% gene_to_ko[[genomeX]],
gene_to_ko[genomeX,geneY]<-1,
gene_to_ko[genomeX,geneY]<-0)
希望这些修改能帮助您解决问题