是什么导致我的 for/if 循环到 R 中的 return 'longer object length is not a multiple of shorter object length' 警告
What is causing my for/if loop to return 'longer object length is not a multiple of shorter object length' warning in R
我正在尝试根据其他两个向量的条件生成向量 (PA)。其他向量的长度都是1978个元素。
向量取自加载到 excel 文件并使用 'x <- S1L1$PercentageCoverage' 和 'y <- S1L1$FoldCount'。
我认为代码应该检查 x 中的每个元素是否等于或大于 1,以及 y 中的每个元素是否等于或大于 70。如果它们都通过了此检查,则应该添加x 向量中第 i 个元素的值到 PA。如果失败,则应添加 0。
PresenceCollector <- function(x, y){
PA <- c()
for (i in 1:1978){
if ((x[i] >= 1) && (y[i] >= 70)){
PA <- c(PA, x[i])
} else {
PA < - c(PA, 0)
}
}
}
即使在 运行 代码之后,PA 向量仍保持 'null',并且它 returns 一条警告消息说 'There were 50 or more warnings (use warnings() to see the first 50)'。这个returns
1: In PA < -c(PA, 0) :
longer object length is not a multiple of shorter object length
2: In PA < -c(PA, 0) :
longer object length is not a multiple of shorter object length
3: In PA < -c(PA, 0) :
longer object length is not a multiple of shorter object length
依此类推,直到打印出 50
关于如何解决这个问题的任何帮助?谢谢!
“向量是从 excel 文件中加载并使用 'x <- S1L1$PercentageCoverage' 和 'y <- S1L1$FoldCount' 获取的。”
看起来您将 S1L1 作为具有 PercentageCoverage 和 FoldCount 列的数据框,并且想要在 PercentageCoverage >= 1 且 FoldCount>=70 时创建一个新列 PA,那么 PA 应该是 PercentageCoverage 否则为 0,对吗?
S1L1$PA <- ifelse(S1L1$PercentageCoverage>=1 & S1L1$FoldCount>=70, S1L1$PercentageCoverage, 0)
这是一个非常简短的解决方案:
function(x, y){
x * (x >= 1 & y >= 70)
}
注意括号。在那里创建了一个布尔值,即 1
s 或 0
s,然后将它们与 x 相乘。
我正在尝试根据其他两个向量的条件生成向量 (PA)。其他向量的长度都是1978个元素。
向量取自加载到 excel 文件并使用 'x <- S1L1$PercentageCoverage' 和 'y <- S1L1$FoldCount'。
我认为代码应该检查 x 中的每个元素是否等于或大于 1,以及 y 中的每个元素是否等于或大于 70。如果它们都通过了此检查,则应该添加x 向量中第 i 个元素的值到 PA。如果失败,则应添加 0。
PresenceCollector <- function(x, y){
PA <- c()
for (i in 1:1978){
if ((x[i] >= 1) && (y[i] >= 70)){
PA <- c(PA, x[i])
} else {
PA < - c(PA, 0)
}
}
}
即使在 运行 代码之后,PA 向量仍保持 'null',并且它 returns 一条警告消息说 'There were 50 or more warnings (use warnings() to see the first 50)'。这个returns
1: In PA < -c(PA, 0) :
longer object length is not a multiple of shorter object length
2: In PA < -c(PA, 0) :
longer object length is not a multiple of shorter object length
3: In PA < -c(PA, 0) :
longer object length is not a multiple of shorter object length
依此类推,直到打印出 50
关于如何解决这个问题的任何帮助?谢谢!
“向量是从 excel 文件中加载并使用 'x <- S1L1$PercentageCoverage' 和 'y <- S1L1$FoldCount' 获取的。”
看起来您将 S1L1 作为具有 PercentageCoverage 和 FoldCount 列的数据框,并且想要在 PercentageCoverage >= 1 且 FoldCount>=70 时创建一个新列 PA,那么 PA 应该是 PercentageCoverage 否则为 0,对吗?
S1L1$PA <- ifelse(S1L1$PercentageCoverage>=1 & S1L1$FoldCount>=70, S1L1$PercentageCoverage, 0)
这是一个非常简短的解决方案:
function(x, y){
x * (x >= 1 & y >= 70)
}
注意括号。在那里创建了一个布尔值,即 1
s 或 0
s,然后将它们与 x 相乘。