Eset2とEssentialの2つのデータフレームを連結しようとしました。それらは遺伝子名を含む1つの共通の列を共有し、両方のフレームは一意の行を有する。R tryCatchスキップエラー
私はEset2で必要な値(RMA、ANNOT)を検索し、対応する遺伝子名でEssentialの行にバインドすることにしました。
しかし、私はEssentialにユニークな遺伝子があるので、時々私は見上げることができません。したがって、エラーが発生します.Eset2で対応する行を検索すると数字(0)が表示されます。
だから私はtryCatchを使うことにしました。 しかし、それは役に立ちません。 RMAとANNOTにNAを入れるのではなく、Eset2にこのような遺伝子が見つからなかったときには、スクリプトは以前に発見された遺伝子の値を入れます。
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
}
は私の代わりにこれを使用することによって、問題を解決:私は間違っtryCatchを使用している場合
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
}
}
私は疑問に思います。 私はそうやってみました:
temp <- eset2[eset2$GENENAME == essential[i,4],]$ANNOT
をしかし、それは助けにはなりませんでした。 tryCatchが失敗した理由を確認できますか?