簡體   English   中英

Ifelse function 用於 dataframe 在 R

[英]Ifelse function for dataframe in R

我在 R 中有一個 dataframe。 df 有兩列帶有值,或者它的維度為 0,0。 如果 dataframe 具有帶值的列,我想保留這些值,但如果維度為 0,0,我想創建兩列,其中一行包含 0,0 值。 要么看起來像這樣:

    start = c (2, 10, 20)
    end = c(5, 15, 25)
    dataframe = as.data.frame (cbind (start, end))

-> 如果df看起來像這樣,它應該被保留

或者像這樣:

start = c ()
end = c()
dataframe = as.data.frame (cbind (start, end))

-> 如果 df 看起來像這樣,則應在第一行中添加 (0,0) 的行。

我試過ifelse

dataframe_new = ifelse (nrow(dataframe) == 0, cbind (start = 0,end =0) , dataframe)

但如果 dataframe 不為空,則只保留第一行第一列的值。 如果 dataframe 為空,則只有一個 0。

而不是 function ifelse ,你應該在這里使用if ... else子句。 ifelse用於創建一個向量,該向量的元素根據與 output 向量相同長度的邏輯向量有條件地變化。 這不是您在這里所擁有的,而是一個簡單的分支條件(如果數據框有零行,則做一件事,如果沒有,則做其他事情)。 這是當你使用if(condition) {do something} else {do another thing}

如果你需要大量使用代碼,你可以把它放在一個簡單的 function 中來節省時間:

fill_empty <- function(x) {
 if(nrow(x) == 0) data.frame(start = 0, end = 0) else x
}

讓我們在您的示例中對此進行測試:

start = c (2, 10, 20)
end = c(5, 15, 25)
dataframe = as.data.frame (cbind (start, end))

fill_empty(dataframe)
#>   start end
#> 1     2   5
#> 2    10  15
#> 3    20  25

start = c ()
end = c()
dataframe = as.data.frame (cbind (start, end))

fill_empty(dataframe)
#>   start end
#> 1     0   0

使用reprex v2.0.2創建於 2022-09-19

暫無
暫無

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

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