簡體   English   中英

R:如何根據另一列的條件在空列中設置值?

[英]R: How to set values in empty column based on condition of another column?

我正在嘗試編寫一個函數,該函數將檢查向量中的每個值是否大於某個值,然后將不同的空列初始化為 1 或 0。如果該值大於設置的參數,則空列的相同索引將設置為 1。否則,如果它不大於該數字,它將設置為 0。所以我的函數將接受一個值,包含概率的列,然后是另一個空列稍后將被制成一列 1 和 0。

運行該函數時我沒有收到任何錯誤,但是該空列沒有得到更新。

我覺得我的邏輯是正確的,但顯然有些東西不起作用。

cut_off_prob <- function(x, prob, pred_class) {
  for (i in 1:length(prob))
  {
    if(prob[i] > x)
    {
     pred_class[i] <- 1
    }
      else {
     pred_class[i] <- 0
    }
  }
}

不需要pred_class作為函數參數。 嘗試這個:

cut_off_prob <- function(x, prob) {
  pred_class <- c() # initialize as an empty vector
  for (i in 1:length(prob)){
    if(prob[i] > x){pred_class[i] <- 1}
    else {pred_class[i] <- 0}
  }
return(pred_class)
}

另一方面,我強烈建議您不要在這種情況下使用 for 循環,因為正如@Gregor Thomas 所說,它的效率非常低。 相比之下,請檢查:

pred_class <- rep(0,length(prob));
pred_class[prob>x] <- 1

此處顯示運行時間(以秒為單位):

"Loop Time: 0.0029909610748291 Conditional Indexing Time: 0.000996828079223633"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM