Q
替換函數示例
26
A
回答
30
如果你看一下功能(通過鍵入在控制檯上的名字),你會看到,它只是[<-
功能的一個簡單的功能化版本,它在?"["
描述。 [
對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
字符索引爲一個名爲向量:
> replace(c(a=1, b=2, c=3, d=4), "b", 10)
a b c d
1 10 3 4
邏輯索引:
> replace(x <- c(a=1, b=2, c=3, d=4), x>2, 10)
a b c d
1 2 10 10
8
這裏有兩個簡單的例子
> 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
11
您還可以使用邏輯測試
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)
1
請注意,上面給出的示例中的第三個參數(值):該值是一個常數(例如, 'Z'或c(20,30))。
使用數據框本身的值定義第三個參數可能會導致混淆。
E.g.用一個簡單的數據幀像這樣(使用dplyr :: data_frame):
tmp <- data_frame(a=1:10, b=sample(LETTERS[24:26], 10, replace=T))
這將這樣的財產以後創建:
a b
(int) (chr)
1 1 X
2 2 Y
3 3 Y
4 4 X
5 5 Z
...等
現在,假設你要想要做,是將列「a」中的值乘以2,但只有列「b」是「X」。我的直接想法是這樣的:
with(tmp, replace(a, b=="X", a*2))
但是,這不會提供所需的結果。 a * 2將被定義爲固定向量而不是對'a'列的引用。因此,在'替換'操作開始時,向量'a * 2'將因此變爲
[1] 2 4 6 8 10 12 14 16 18 20
。因此,第一行'b'等於「X」,'a'中的值將被放置2.第二次,它將被替換爲4等等......它不會被兩次取代在特定行中的a值。
相關問題
- 1. networkx:json_graph.node_link_data替換示例
- 2. 函數替換
- 3. str替換函數
- 4. xslt替換函數
- 5. JavaScript替換函數
- 6. Java替換函數
- 7. Notepad ++替換函數
- 8. 替換函數MsAccess
- 9. Python替換函數
- 10. 替換函數不能替換
- 11. 用全局替換函數替換函數
- 12. xively(替換爲Cosm(替換爲Pachube))示例和圖表
- 13. chrome.extension.getBackgroundPage()函數示例
- 14. MJPEGStream函數示例
- 15. 如何用新的示例替換malloc
- 16. 在何處替換示例模式?
- 17. jQuery替換函數條html
- 18. 在C++中替換函數
- 19. 使用函數替換NULL
- 20. 函數替換normalizer_normalize PHP?
- 21. 像sphinxql替換()函數
- 22. 用UserStyle替換JavaScript函數
- 23. preg替換函數和http://?
- 24. 替換函數的問題
- 25. 替換鏈接函數
- 26. PHP:preg_replace函數替換$ foo的
- 27. Haskell函數替換括號
- 28. Ajax函數替換消息
- 29. 替換CF9中的函數
- 30. JQuery替換函數查詢