1
我嘗試連接2個數據框:Eset2和Essential。它們共享1個包含基因名稱的共同列,並且這兩個框架都有唯一的行。R tryCatch跳過錯誤
因此,我決定在Eset2中查找我需要的值(RMA,ANNOT),並將它們綁定到Essential中與相應基因名稱對應的行。
但是有時我不能查找,因爲Essential中有獨特的基因。所以,會出現一個錯誤:我在Eset2中搜索相應的行會變成數字(0)。
所以我決定使用tryCatch。 但是,它沒有幫助。當搜索在Eset2中沒有找到這樣的基因時,不是將NA用於RMA和ANNOT,而是從之前成功發現的基因中提取值。
for (i in 1:nrow(essential)) {
temp <- tryCatch(
# eset2$GENENAMEand essential[,4] contain gene names
eset2[eset2$GENENAME == essential[i,4],]$RMA,
error = function(e) {
print("This is the 'error' part1")
return(NA)}
)
essential$rma[i] <- temp
temp <- tryCatch(
eset2[eset2$GENENAME == essential[i,4],]$ANNOT,
error = function(e) {
print("This is the 'error' part2")
return(NA)}
)
essential$long_name[i] <- temp
}
我用這個代替解決問題:
for (i in 1:nrow(essential)) {
temp <- try(eset2[eset2$SYMBOL == essential[i,4],]$rma)
if (length(temp) != 0) {
essential$rma[i] <- temp
}
else {
essential$rma[i] <- NA
}
temp <- try(eset2[eset2$SYMBOL == essential[i,4],]$GENENAME)
if (length(temp) != 0) {
essential$long_name[i] <- temp
}
else {
essential$long_name[i] <- NA
}
}
我不知道如果我使用tryCatch錯誤。 我試着這樣做:
temp <- eset2[eset2$GENENAME == essential[i,4],]$ANNOT
但它並沒有幫助。 你能看到我的tryCatch失敗的原因嗎?