全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
7604 10
2014-04-21
悬赏 5 个论坛币 已解决
现在for循环100次!每一次得到一个矩阵请问怎么存储?谢谢
a=NULL
for(i in 1:100){  
  a[i]=matrix(rnorm(20),nrow = 4, ncol = 5)

}



上面的命令a的赋值时错误的,请问怎么设置a来存储矩阵matrix(rnorm(20),nrow = 4, ncol = 5)?谢谢

最佳答案

路浩张琦 查看完整内容

好累啊,绕那么大个弯……是问题没问好,还是都太不专业了? a
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-4-21 19:21:59
好累啊,绕那么大个弯……是问题没问好,还是都太不专业了?

a <- array(rnorm(20),dim=c(4,5,100))

这样就得到结果了,何必非要用matrix?
好吧,楼主这确实是个好问题,涉及到存储方式的问题,说一下自己的想法:
首先,矩阵实际上是有一个附加属性(维数dim)的向量,维数即为一个长度为2的向量,用来指定矩阵的行数和列数。
其次,当a被赋值NULL,如果a下一步被matrix赋值,实质上是用matrix生成的矩阵整体覆盖a的NULL值,a整体属性发生改变
最后,由于语句中,a是被循环赋值,matrix看起来只是覆盖a中的一个标量,而由于标量无法单独改变属性,因此matrix生成的矩阵赋值失败,a中的那个标量仅仅被matrix生成矩阵中的第一个值所覆盖,可以通过下列语句来判断其过程:
a <- NULL
for(i in 1:100) a[i] <- matrix(2:21,nrow = 4, ncol = 5)
此时可以发现a全部被matrix生成矩阵中的第一个值“2”所覆盖
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-21 20:59:03
存成3为数组
a初始化为4*5*100,然后给赋值a[,,i]
另外,不推荐用for循环,试试apply族函数
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-22 00:06:45
复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-22 08:43:14
多维可以
list也可选择
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-10 20:39:23
这样都不给悬赏,感觉不会再爱了……
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群