我想一个子集数据帧我这样做更大:子集比比赛
test = genes_names %in% annot2$Short_Name_Sc
summary(test) # 3140 rows to subset
## Mode FALSE TRUE NA's
## logical 2146 3140 0
test2 = annot2[test, 1]
nrow(annot2)
## [1] 5371
nrow(test2)
## [1] 3195 # There are 55 rows unexpected
令我惊讶的test2
对象具有比TRUE
S IN test
矢量多行。我认为这可能与[]
有关。
我试图与子集:
probe = subset(annot2, test, 1)
但它具有相同的行数比以前的代码。有什么解释吗?
数据相当大,所以我不会发布它,但不幸的是我没有设法制作一个可重复的例子。 的数据集的所有字符:
summary(annot2)
## Probe_ID Short_Name_Sc Systematic_Name_Sc
## Length:5371 Length:5371 Length:5371
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
summary(genes_names)
## Length Class Mode
## 5286 character character
您的示例完全不可重现。另外,你正在使用genes_names,annot2,test和annot2?使其具有可重现性或至少表现出清晰的思路。 –
也许你想'test = annot2 $ Short_Name_Sc%in%genes_names',它将返回一个逻辑向量,指示'Short_Name_Sc'中的哪一个属于'genes_names'。 – jbaums
@konvas'length(genes_names)[1] 5286> nrow(annot2)[1] 5371'你是对的。这意味着'%in%'和'subset'省略了''。当我用'&'命令进行子集化时,我应该这样做。如果你在答复中发帖,我会接受它。谢谢 –
Llopis