2013-03-01 31 views
-3

在R中,在向量中,即1-dim矩陣,我希望將值3更改爲值1的組件,值4更改爲值2的組件我該怎麼做?謝謝!用一些其他值替換矢量中的某個分量值

+5

其實在R向量不是1-dim矩陣(並且根本不是矩陣)。它們確實有長度但不是維度,至少不是那些暗淡的函數會返回的。這不是一個簡單的挑剔練習。許多錯誤是由於不瞭解細節而導致的。 – 2013-03-01 01:51:40

回答

14

慣用[R方法是使用[<-,在形式 x[index] <- result

如果你正在處理的整數/因素或字符變量,然後==會可靠地工作的索引,

x <- rep(1:5,3) 
x[x==3] <- 1 
x[x==4] <- 2 

x 
## [1] 1 2 1 2 5 1 2 1 2 5 1 2 1 2 5 

car有一個有用的功能recode(這是一個[<-包裝),這將讓你結合所有重新編碼在si ngle調用

例如

library(car) 

x <- rep(1:5,3) 

xr <- recode(x, '3=1; 4=2') 

x 
## [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 
xr 
## [1] 1 2 1 2 5 1 2 1 2 5 1 2 1 2 5 

由於@joran用於從plyr包提mapvalues,另一包裝器[<-

x <- rep(1:5,3) 
mapvalues(x, from = c(3,1), to = c(1,2)) 

plyr::revaluemapvalues具體factorcharacter一個包裝變量。

+2

+1 recode()',我從來沒有見過它,但肯定會從這裏保存在我的工具箱中。 – N8TRO 2013-03-01 01:29:45

+4

** plyr **包中還有'revalue'和'mapvalues'。 – joran 2013-03-01 01:35:52