我是这个R编程的新手,我在使用R编程语言获取Affy探测ID的基因名称和符号时遇到了问题。
请让我知道如何最好地解决这个问题。
我使用了以下代码
enter code here
probe <- read.delim("super.txt",stringsAsFactors=F, header = T, sep="\t")
probe$probeid<-tolower(probe$probeid)
names<-read.delim("GSE42568_probeid.txt", as.is=T, stringsAsFactors=F, header=T)
##insted of dataframa we are sending out the vecotr
names<-names$probeid
NoMatchID = NULL
vec<-NULL
system.time({
for (i in 1:11390){
index<-grep(names[i],probe$probeid,fixed=T)
#index<-grep(paste("^",names[i],"$"),probe$probeid,fixed=T)
if (length(index)!=0) {
cat("Index of", names[i],"is", index, "\n")
} else {
cat("Index of", names[i], "Found No Match \n")
NoMatchID = c(NoMatchID,i)
}
NoMatchID<-c(NoMatchID,index)
vec_NA <- data.frame(probe[-NoMatchID,])
}
})
NoMatchID <- data.frame(probe[NoMatchID,])
NoMatchID_probe = setdiff(1:nrow(probe), unique(vec))
write.table(vec_NA, file = "probeids_matched_1.txt", row.names = FALSE, append = FALSE, col.names = TRUE, sep = "\t")
如果你们有任何其他办法可以解决这个问题,请告诉我:( ..这对我有很大帮助!!!
答案 0 :(得分:0)
我不确定你明白了什么。如果您的基因名称和符号在探针数据框中
probe <- read.delim("super.txt",stringsAsFactors=F, header = T, sep="\t")
probe$probeid<-tolower(probe$probeid)
names<-read.delim("GSE42568_probeid.txt", as.is=T, stringsAsFactors=F, header=T)
##insted of dataframa we are sending out the vecotr
names<-names$probeid
并且您想要在probe
中提取与names
向量不匹配的行的名称。然后你应该修改你的代码如下:
# NoMatchID = NULL
MatchID_probe <- NULL
for (i in 1:11390){
index<-grep(names[i],probe$probeid,fixed=T)
if (length(index)!=0) {
cat("Index of", names[i],"is", index, "\n")
MatchID_probe = c(MatchID_probe,index)
} else {
cat("Index of", names[i], "Found No Match \n")
# NoMatchID = c(NoMatchID,i)
}
}
NoMatchID_probe = setdiff(1:nrow(probe), unique(MatchID_probe))
DF_NoMatch <- probe[NoMatchID_probe,]
DF_NoMatch