42-*_*42- 37
如果你看一下这个函数(通过在控制台输入它的名字),你会发现它只是函数的简单功能化版本[<-,如下所述?"[".[对R来说是一个相当基本的功能,所以建议您查看该页面以获取更多详细信息.特别重要的是学习索引参数(第二个参数replace可以是逻辑,数字或字符分类的值.当第二个和第三个参数的长度不同时,将发生回收:
你应该在第一个参数中"读取"函数调用为"",使用第二个参数作为索引,将第三个参数的值放入第一个参数中:
> replace( 1:20, 10:15, 1:2)
[1] 1 2 3 4 5 6 7 8 9 1 2 1 2 1 2 16 17 18 19 20
Run Code Online (Sandbox Code Playgroud)
命名向量的字符索引:
> replace(c(a=1, b=2, c=3, d=4), "b", 10)
a b c d
1 10 3 4
Run Code Online (Sandbox Code Playgroud)
逻辑索引:
> replace(x <- c(a=1, b=2, c=3, d=4), x>2, 10)
a b c d
1 2 10 10
Run Code Online (Sandbox Code Playgroud)
Jam*_*and 12
您也可以使用逻辑测试
x <- data.frame(a = c(0,1,2,NA), b = c(0,NA,1,2), c = c(NA, 0, 1, 2))
x
x$a <- replace(x$a, is.na(x$a), 0)
x
x$b <- replace(x$b, x$b==2, 333)
Run Code Online (Sandbox Code Playgroud)
Jil*_*ina 10
这是两个简单的例子
> x <- letters[1:4]
> replace(x, 3, 'Z') #replacing 'c' by 'Z'
[1] "a" "b" "Z" "d"
>
> y <- 1:10
> replace(y, c(4,5), c(20,30)) # replacing 4th and 5th elements by 20 and 30
[1] 1 2 3 20 30 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)