2015-10-08 83 views
1

我正在嘗試使用有序的分類變量。看起來最大最小函數應該與訂購的類別一起工作,但它不適用。返回最高級別因子

var<-factor(c("1","6","4","3","5","2"),levels=c("1","6","4","3","5","2")) 
max(levels(var)) 

我想代碼返回最後一個因子級別(2),但它返回第二個(6)。我究竟做錯了什麼?在此先感謝您的幫助

+1

6是最大值。而你正在要求。也許'尾巴'? –

+1

'levels(var)[max(as.numeric(var))]'returns'[1]「2」'。順便說一句,你的因素不是在R的意義上排序。 –

+0

6是數字的最大值,但是當我在命令的「levels」部分指定順序時,我會假設它會吐出最後一級(2)。 –

回答

3

只需在factor函數中指定ordered參數,然後它將工作。請參閱以下內容:

#set the ordered argument to TRUE, so that R understands the order of the levels 
#and i.e. which one is min and which is max 
var<-factor(c("1","6","4","3","5","2"),levels=c("1","6","4","3","5","2"), ordered=TRUE) 

#and then 
> max(var) 
[1] 2 
Levels: 1 < 6 < 4 < 3 < 5 < 2 
+0

哇,這是令人驚訝的+1!你知道'max'被記錄在哪些因素上嗎?我看到它說它們是泛型函數,但是有一個'max.factor'或'max.ordered' ... – jenesaisquoi

+0

@bunk我似乎無法找到任何有關'max'的文檔,但你可以找到信息''factor'。因素基本上是整數在背景中,顯然如果他們是有序的,然後他們得到有序的整數分配到他們的水平。這是'max'如何理解哪個元素實際上是最大值。 – LyzandeR

+0

我現在正在閱讀關於它的內容,如果你看'摘要'。我甚至不知道這個組通用的東西存在:D – jenesaisquoi