这是我想达到的目的,出于某种原因认为使用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)])