我正在嘗試根據其他兩個向量的條件生成向量(PA)。其他向量的長度均為 1978 個元素。
這些向量是從加載到 excel 檔案中并使用“x <- S1L1$PercentageCoverage”和“y <- S1L1$FoldCount”獲取的。
我認為代碼應該檢查 x 中的每個元素是否等于或大于 1,以及 y 中的每個元素是否等于或大于 70。如果它們都通過此檢查,則應添加第 i 個元素的值在 x 向量到 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 向量仍保持為“空”,并且它回傳一條警告訊息,指出“有 50 個或更多警告(使用 warnings() 查看前 50 個)”。這回傳
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
有關如何解決此問題的任何幫助?謝謝!
uj5u.com熱心網友回復:
這是一個非常簡短的解決方案:
function(x, y){
x * (x >= 1 & y >= 70)
}
注意括號。在那里創建一個布林值,即1s 或0s,然后將它們與 x 相乘。
uj5u.com熱心網友回復:
“向量是從加載到 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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/443150.html
