我试图在函数中多次使用R的替换,但只有最后一次使用似乎有效。例如,使用x where
x <- c(1:3)
如果我想为每个奇数值添加一个,我试过
test <- function(x) {
replace(x,x==1,2)
replace(x,x==3,4)
}
但是test(x)导致(1,2,4)我希望它(2,2,4) - 换句话说,只有最后一个“替换”似乎正在起作用。我知道我可以在向量中按位置引用值,但是如果我想引用值本身,任何人都知道如何解决这个问题?
非常感谢!
答案 0 :(得分:1)
您需要将替换函数的输出分配给变量
x <- c(1:3)
test <- function(x) {
x <- replace(x,x==1,2)
replace(x,x==3,4)
}
test(x)
[1] 2 2 4
或使用case_when
dplyr
功能
library(dplyr)
case_when(x == 1 ~ 2,
x == 3 ~ 4,
TRUE ~ as.double(x))
[1] 2 2 4