2015-09-04 158 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