全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1632 5
2016-07-26
求矩阵的偶数行时,为什么这个程序是错的
dee=function(m) {
  a=nrow(m)/2
  b=ncol(m)
  k=matrix(0,nrow=a,byrow=FALSE)
  for(i in 1:a)
    k[i,]=m[i*2,]

  k
}



错误提示为:Error in k[i, ] = m[i * 2, ] :
  number of items to replace is not a multiple of replacement length
不知道是什么意思?
二维码

扫码加我 拉你入群

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

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

全部回复
2016-7-27 08:12:47
你在自己检验一下,代码matrix(0, nrow=3, byrow=FALSE)出来的是什么,你就清楚错在哪里了。
矩阵的偶数行可以直接得到:
m[seq(2, nrow(m), by = 2), ]
二维码

扫码加我 拉你入群

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

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

2016-7-27 10:50:15
cheetahfly 发表于 2016-7-27 08:12
你在自己检验一下,代码matrix(0, nrow=3, byrow=FALSE)出来的是什么,你就清楚错在哪里了。
矩阵的偶数行 ...
,我还想问一下,假设有360天,每一天的数据都是一个等阶的矩阵,这样用R来将每30天的矩阵求和,形成12个矩阵呢?谢谢!
二维码

扫码加我 拉你入群

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

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

2016-7-27 12:09:19
dqj1551007438 发表于 2016-7-27 10:50
,我还想问一下,假设有360天,每一天的数据都是一个等阶的矩阵,这样用R来将每30天的矩阵求和, ...
一个matrix其实就是一个特殊的vector,360个矩阵就是360个vectors,这下明白了吧。
二维码

扫码加我 拉你入群

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

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

2016-7-27 21:51:23
cheetahfly 发表于 2016-7-27 12:09
一个matrix其实就是一个特殊的vector,360个矩阵就是360个vectors,这下明白了吧。
比如一年360天,每一天有43行数据,我们需要把每43行的数据看做一个矩阵,这样就有了360个43*43的矩阵。然后再以30天为一个月,每30个矩阵相加,就得到12个月的矩阵。。这中间怎么定义矩阵序列和n个序列求和,都遇到问题了
D=array(0,dim=c(43,43,360))
for(j in 1:365){                   #将每一天弄成一个矩阵,每一天是43行
    p[j]=43*j-42  
    q[j]=43*j
    D[j]=rbind(x[c(p[j]:q[j]),])  #第j天的矩阵

下面是求和
for(k in 1:12)    {                  #一共有12个月
   g[k]=sum(a[c(1:k)])-a[k]+1
   #计算出每个月的第一天和最后一天的时间
   d[k]=sum(a[c(1:k)])
   M[,,k]=apply(D[,,seq(g[k],d[k],by=1)],c(1,2),sum)       #将每个月中所有天数的矩阵相加


这里的D定义是不是对的?是应该写成D[,,j]还是D[,j]还是怎么办?运行的时候老出错

另外,求和的部分有问题吗?

感觉最主要的是怎么定矩阵序列
二维码

扫码加我 拉你入群

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

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

2016-7-28 08:44:23
dqj1551007438 发表于 2016-7-27 21:51
比如一年360天,每一天有43行数据,我们需要把每43行的数据看做一个矩阵,这样就有了360个43*43的矩阵。然 ...
举例原始数据,和想要达到的结果数据,不要给出循环语句的代码,让别人顺着你的思路,搞清楚你错在哪里,然后再将你带出来是一件事倍功半的事。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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