Я попытался объединить 2 dataframes: Eset2 и Essential. Они разделяют 1 общий столбец, который содержит имена генов, и оба кадра имеют уникальные строки.Ошибка проскальзывания R tryCatch
Итак, я решил найти нужные значения (RMA, ANNOT) в Eset2 и привязать их к строке в Essential с соответствующим именем гена.
Но иногда я не смог бы найти, поскольку в Essential есть уникальные гены. Таким образом, будет ошибка: мой поиск соответствующей строки в Eset2 будет отображаться числовым (0).
Поэтому я решил использовать tryCatch. Однако это не помогает. Вместо того, чтобы вводить NA для RMA и ANNOT, когда поиск не нашел такого гена в 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
}
Я решил проблему с помощью вместо этого:
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 не прошел?