作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试连接 2 个数据框:Eset2 和 Essential。它们共享 1 个包含基因名称的公共(public)列,并且两个框架都有唯一的行。
所以我决定在 Eset2 中查找我需要的值(RMA,ANNOT)并将它们绑定(bind)到 Essential 中具有相应基因名称的行。
但有时我无法查找,因为 Essential 中有独特的基因。所以,会有一个错误:我在 Eset2 中搜索相应的行会出现 numeric(0)。
所以我决定使用tryCatch。
但是,它没有帮助。当搜索在 Eset2 中没有找到这样的基因时,脚本不会为 RMA 和 ANNOT 输入 NA,而是输入上一个成功找到的基因的值。
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
}
}
temp <- eset2[eset2$GENENAME == essential[i,4],]$ANNOT
最佳答案
我相信错误 block 从未被评估的原因是数据帧子集评估为 numeric(0)
不是错误。相反,您应该明确检查 numeric(0)
并替换为 NA
当你遇到它时:
for (i in 1:nrow(essential)) {
temp <- eset2[eset2$GENENAME == essential[i,4],]$RMA
essential$rma[i] <- ifelse(length(temp) == 0, NA, temp)
temp <- eset2[eset2$GENENAME == essential[i,4],]$ANNOT
essential$long_name[i] <- ifelse(length(temp) == 0, NA, temp)
}
for
您使用的循环,可能会将整个循环减少到几行 R 代码。但是这个答案有望阐明为什么错误 block 从未被击中,以及您可以做些什么作为替代方案。
关于R tryCatch 跳过错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39751168/
我有一个经典的 ASP 页面 (VBscript),它在服务器端生成 XML,然后 Response.Writes。该页面根本没有客户端。 但是我需要将其转换为 JSON。由于我找不到有效的 ASP
我想从客户端应用程序的 HDFS 中读取特定的 SequenceFile。我可以使用 SequenceFile.Reader 来做到这一点,它工作正常。但是是否也可以通过分析抛出的 IOExcepti
我是一名优秀的程序员,十分优秀!