2017-08-16 23 views
2

如果我有一個數字的向量,我知道如何使用剪切功能,並將其分配給三類:如何在R中使用具有剪切功能的重複標籤?

v<-c(3,2,9,3,4,10,-4) # example vector 
c<-cut(v,breaks=c(-10,0,3,8,Inf),labels=c("blue","yellow","green","orange")) 
c 
[1] yellow yellow orange yellow green orange blue 
Levels: blue yellow green orange 

我的問題是,我現在要投射範圍的數字色彩「標貼」的重用顏色,例如獲得條紋效果:

c<-cut(v,breaks=c(-10,0,3,8,Inf),labels=c("blue","green","blue","green")) 

,但是這給了我一個錯誤:

factor level [3] is duplicated 

我預計削減功能項目的類別的指數,然後使用該指數挑出來的進入標籤向量,但這似乎不是它的工作方式。有沒有辦法使用「剪切」重複標籤?

+2

應該可以使用R中的未來版本中重複的標籤(或3.4.2或3.5.0)。從[R-devel頁面中的更改](http://stat.ethz.ch/R-manual/R-devel/doc/html/NEWS.html):*因子(x,等級,標籤)現在允許重複標籤(不重複的級別!)。因此,您可以直接將x的不同值映射到同一級別。* – lmo

回答

4

您可以強制爲數字,所以它不再是一個因素,然後使用索引來匹配你的顏色:

v <- c(3,2,9,3,4,10,-4) 
C <- cut(v, breaks = c(-10,0,3,8,Inf)) 

C <- as.numeric(C) 
c("blue","green","blue","green")[C] 
[1] "green" "green" "green" "green" "blue" "green" "blue"