2015-09-04 107 views
0

我在理解如何用矩陣初始化數據幀時遇到了一些問題。當我執行以下命令:從矩陣初始化數據幀

m1 = cbind(1:5,11:15) 
m2 = cbind(21:25, 31:35) 

d = data.frame(m1) 
d$m2 = m2 

如何創建直接創建一個m1數據框,爲此df$m1將返回一個矩陣,作爲df$m2確實在我的例子嗎?

+0

也許創建一個ID變量數據幀,然後再去做'd $ M1 < - m1'?但是我「米不知道你想利用矩陣數據框做什麼。是否列表滿足您的需求更好? – Heroka

+0

你得到你想要的'受到脅迫DF $ m2'。舉例來說,這是不行的:'M1 = cbind(1:5,11:15); M2 = cbind(21:26,31:36); d = data.frame(M1); d $ M2 = m2' 如果你想有一個'data.frame'是塊矩陣,我建議你堅持陣列(如矩陣或多維數組)。 **什麼是你真正想幹什麼?** –

+0

我只是想理解語法,我在沒有了解後果的情況下做了'd $ m2 <-m2',一個很好的副作用是'熔化(d $ m2)',這與行的'expand.grid'相反和'm2'的列。 –

回答

2

使用I指定應被視爲矩陣「原樣」

> d<-data.frame(m1=I(m1),m2=I(m2)) 
> d$m1 
    [,1] [,2] 
[1,] 1 11 
[2,] 2 12 
[3,] 3 13 
[4,] 4 14 
[5,] 5 15 
> d$m2 
    [,1] [,2] 
[1,] 21 31 
[2,] 22 32 
[3,] 23 33 
[4,] 24 34 
[5,] 25 35