楼主: mklyzl
9453 8

[问答] R语言for循环问题 [推广有奖]

  • 4关注
  • 1粉丝

已卖:3份资源

讲师

32%

还不是VIP/贵宾

-

威望
0
论坛币
732 个
通用积分
24.5743
学术水平
16 点
热心指数
24 点
信用等级
14 点
经验
57714 点
帖子
350
精华
0
在线时间
595 小时
注册时间
2010-10-13
最后登录
2023-3-11

楼主
mklyzl 发表于 2014-9-30 11:03:01 |AI写论文
5论坛币
  1. lagmat <- function(x,lag){
  2.     input1 <- matrix(0,length(x)-lag,lag);
  3.     for(ii in c(1:lag)){
  4.         input1[,ii]= x[ii:length(x)-lag+ii-1]
  5.     }
  6.     output1=x[lag+1:length(x)]
  7.     lagmat=list(x=input1,y=output1)
  8. }
复制代码


报错:Error in x[ii:length(x) - lag + ii - 1] :
  only 0's may be mixed with negative subscripts
我想实现的功能如下图:

r.png (6.93 KB)

r.png

最佳答案

peikaibing 查看完整内容

input1[,ii]= x 这里应该改成 input1[,ii]= x 要注意括号,比如1:n-1实际上表示0:(n-1)
关键词:for循环 For R语言 GMAT GMA function matrix Error

回帖推荐

zhangzhangmen 发表于4楼  查看完整内容

1楼说的是对的,第6行也有同样的问题,“lag+1”也要用括号括起来; 另外,建议第7行改为return(lagmat=list(x=input1,y=output1))。

peikaibing 发表于2楼  查看完整内容

input1[,ii]= x 这里应该改成 input1[,ii]= x 要注意括号,比如1:n-1实际上表示0:(n-1)

沙发
peikaibing 在职认证  发表于 2014-9-30 11:03:02
input1[,ii]= x[ii:length(x)-lag+ii-1] 这里应该改成  input1[,ii]= x[ii:(length(x)-lag+ii-1)]

要注意括号,比如1:n-1实际上表示0:(n-1)   
已有 2 人评分热心指数 收起 理由
mklyzl + 2 热心帮助其他会员
求证1加1 + 1 热心帮助其他会员

总评分: 热心指数 + 3   查看全部评分

藤椅
取啥昵称叻 发表于 2014-9-30 13:43:00
这个可以学习一下                                                                        
                                       
                                                     
                                                     
                                             
                                                                 
                                                                                 

板凳
zhangzhangmen 发表于 2014-9-30 16:09:00
1楼说的是对的,第6行也有同样的问题,“lag+1”也要用括号括起来;
另外,建议第7行改为return(lagmat=list(x=input1,y=output1))。
已有 1 人评分热心指数 收起 理由
mklyzl + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

报纸
waterhorse 发表于 2014-10-1 03:57:23
GOOD TO KNOW, Thank you for sharing this.

地板
soccy 发表于 2014-10-1 19:20:08
速度会很慢,考虑使用Rcpp编写。

7
mklyzl 发表于 2014-10-9 13:56:53
zhangzhangmen 发表于 2014-9-30 16:09
1楼说的是对的,第6行也有同样的问题,“lag+1”也要用括号括起来;
另外,建议第7行改为return(lagmat=li ...
一楼的回复在先,我把币奖励他了,我看你币也挺多的,不介意吧.
或者,你上传一个空附件,设置5-10个币,我购买.

8
mklyzl 发表于 2014-10-9 13:59:46
以前我是用matlab,现在用R语言;语法不太一样啊!
2:3+5在matlab里面是[2 3 4 5 6 7 8];在R语言里面是[7 8]

9
zhangzhangmen 发表于 2014-10-10 11:58:43
mklyzl 发表于 2014-10-9 13:56
一楼的回复在先,我把币奖励他了,我看你币也挺多的,不介意吧.
或者,你上传一个空附件,设置5-10个币,我购买 ...
嘿嘿,没事

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 15:49