在函数中多次使用R替换

时间:2018-05-30 21:23:05

标签: r function replace

我试图在函数中多次使用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) - 换句话说,只有最后一个“替换”似乎正在起作用。我知道我可以在向量中按位置引用值,但是如果我想引用值本身,任何人都知道如何解决这个问题?

非常感谢!

1 个答案:

答案 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