双for循环中的if语句:具体示例
if statement within double for loop: specific example
我正在编写一个比较两个数据帧的短代码 - 列表和已知位置。我想知道列表中的每个项目是否位于已知位置。
colnames(list) <- c("gene_symbol", "chromo", "start", "end")
colnames(knownlocation) <- c("snp", "chr", "s", "e")
为了找到它,我编写了代码以在 "list" 中创建一个新列,无论它是否位于任何已知位置:
for (i in 1:nrow(list)) {
for (j in 1:nrow(knownlocation)) {
if ( (list[i, 2] == knownlocation[j, 2]) && (list[i, 3] >= knownlocation[j, 3]) && (list[i, 4] <= knownlocation[j, 4]) ) {
list[i, 5] = "TRUE" }
else { list[i, 5] = "FALSE"}
}}
这段代码对我来说很好,而且运行没有错误。问题是整个列表显示 FALSE,即使它确实落在 knownlocation 中的某个位置内。谁能找到我遗漏的明显错误的东西?
问题是 else
子句将在之前发现 TRUE
的实例中被 FALSE
覆盖。基本上,您只想在满足条件时存储 TRUE
,但在执行循环之前将所有值初始化为 FALSE
。
尝试删除 else
子句。
要使用 FALSE
初始化 list
的第 5 列,请在嵌套循环之前执行以下操作:
list$V5 = FALSE
代码:
list$V5=TRUE
for (i in 1:nrow(list)) {
for (j in 1:nrow(knownlocation)) {
if ( (list[i, 2] == knownlocation[j, 2]) && (list[i, 3] >= knownlocation[j, 3]) && (list[i, 4] <= knownlocation[j, 4]) ) {
list[i, 5] = "TRUE" }
}
我正在编写一个比较两个数据帧的短代码 - 列表和已知位置。我想知道列表中的每个项目是否位于已知位置。
colnames(list) <- c("gene_symbol", "chromo", "start", "end")
colnames(knownlocation) <- c("snp", "chr", "s", "e")
为了找到它,我编写了代码以在 "list" 中创建一个新列,无论它是否位于任何已知位置:
for (i in 1:nrow(list)) {
for (j in 1:nrow(knownlocation)) {
if ( (list[i, 2] == knownlocation[j, 2]) && (list[i, 3] >= knownlocation[j, 3]) && (list[i, 4] <= knownlocation[j, 4]) ) {
list[i, 5] = "TRUE" }
else { list[i, 5] = "FALSE"}
}}
这段代码对我来说很好,而且运行没有错误。问题是整个列表显示 FALSE,即使它确实落在 knownlocation 中的某个位置内。谁能找到我遗漏的明显错误的东西?
问题是 else
子句将在之前发现 TRUE
的实例中被 FALSE
覆盖。基本上,您只想在满足条件时存储 TRUE
,但在执行循环之前将所有值初始化为 FALSE
。
尝试删除 else
子句。
要使用 FALSE
初始化 list
的第 5 列,请在嵌套循环之前执行以下操作:
list$V5 = FALSE
代码:
list$V5=TRUE
for (i in 1:nrow(list)) {
for (j in 1:nrow(knownlocation)) {
if ( (list[i, 2] == knownlocation[j, 2]) && (list[i, 3] >= knownlocation[j, 3]) && (list[i, 4] <= knownlocation[j, 4]) ) {
list[i, 5] = "TRUE" }
}