2015-06-19 39 views
0

我創建了三個矢量,並嘗試使用cbind將它們合併到一個表中。第三個向量是三個層次的因素。我得到這樣的輸出:帶有等級名稱的cbind因子矢量

v1 <- c(1,2,3) 
v2 <- c(4,5,6) 
v3 <- factor(c('lorem','ipsum','dolor')) 
cbind(v1,v2,v3) 
    v1 v2 v3 
[1,] 1 4 3 
[2,] 2 5 2 
[3,] 3 6 1 

首選的輸出將是:

cbind(v1,v2,v3) 
    v1 v2 v3 
[1,] 1 4 lorem 
[2,] 2 5 ipsum 
[3,] 3 6 dolor 

是否有可能獲得級別名稱,而不是如上面顯示的ID?

+2

我認爲你需要'data.frame',而不是'cbind'爲'cbind'給出了一個矩陣和'matrix'只能容納一個類。該因素被強制爲數值 – akrun

+0

如果您需要使用'cbind',請嘗試'cbind(v1,v2,v3 = levels(v3)[v3])' – akrun

回答

1

不確定你爲什麼需要這樣做。最好使用可容納多個類的data.frame。通過使用cbind,我們得到一個matrix和一個matrix只能容納一個類。因此,即使只有一個非數字值,這些列也會全部轉換爲「字符」類。

cbind(v1, v2, v3=levels(v3)[v3]) 
#  v1 v2 v3  
#[1,] "1" "4" "lorem" 
#[2,] "2" "5" "ipsum" 
#[3,] "3" "6" "dolor" 

或者

cbind(v1, v2, v3=as.character(v3)) 
+0

謝謝。沒有考慮data.frame;儘管它可能很明顯。 – user1477388