![](/img/trans.png)
[英]Insert elements into a list based on depth and `if` conditions using modify_depth and modify_if (purrr)
[英]Replacement of nested ifelse using purrr & modify_if
這是我想要實現的目標,出於某種原因認為使用 purrr 和“modify_if”會更有效? 在應用程序中,它會迅速增長,因此速度/效率很重要。 這看起來很簡單,但我需要做的是,每個 ifelse 級別都需要幾個命令。
vec1 <- c(1,2,3)
vec1 <- sapply(
vec1,function(x) ifelse(x == 1,2,
ifelse (x == 2,3,
ifelse (x == 3,1,0))))
vec1 #output
[1] 2 3 1
另外,如果沒有其他條件,即如果不滿足謂詞,我該如何編寫ifelse
代碼,我只想什么都不做? 只需使用if
語句而不是ifelse
。
謝謝,J
這里不需要sapply
, ifelse
是矢量化的,可以直接使用。
作為替代方案,您可以使用dplyr::recode
。
dplyr::recode(vec1, `1` = 2, `2` = 3, `3` = 1)
#[1] 2 3 1
或者case_when
是嵌套ifelse
語句的替代方案。
dplyr::case_when(vec1 == 1 ~2, vec1 == 2 ~3, vec1 == 3 ~1)
我們也可以在base R
中使用命名向量,而不使用任何包或 ifelse
unname(setNames(1:3, c(2, 3, 1))[as.character(vec1)])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.