我想一個子集數據幀我這樣做更大:子集比比賽
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