全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件
2779 5
2010-04-23
wr<-function(x){
    n<-length(x);y<-1:n;
    k<-1;i<-1;bt<-0;
    while(i<n){
        while(abs(x)==abs(x[i+1])){
            i<-i+1;
            k<-k+1;
            bt<-1;
        }
        if(bt){
            y[(i-k+1):i]<-sum(y[(i-k+1):i])/k;
            k<-1;
            bt<-0;
        }
    i<-i+1;
    }
    for(m in 1:n) if(x[m]<0) y[m]<-(-y[m])
    return(y)
}

参数x是一个向量,夸张的事情是,
当我输入一个向量时,比如 v<-c(4.12,5.81,7.63,9.74,10.39,11.92,12.32,12.89,13.54,14.45),
然后再调用wr(v),函数可以正常运行,
可是当这个v 向量是其他的向量的运算得到的,比如 v<-a+b  a,b是两个相同长度向量的,
这时候在调用 wr(v)就会出错,

报出“错误于while (abs(x) == abs(x[i + 1])) { : 需要TRUE/FALSE值的地方不可以用缺少值>

这个到底什么意思啊,我晕,搞得我半夜都睡不着
真的想不通这有什么区别吗?
怎么运算得到的就不行,非要亲自打进去才行啊?
求各位指点,,谢谢了啊,,,,,
二维码

扫码加我 拉你入群

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

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

全部回复
2010-4-23 09:51:10
while (abs(x[i]) == abs(x[i + 1]))
二维码

扫码加我 拉你入群

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

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

2010-4-23 11:39:17
楼上的说具体点啊?
二维码

扫码加我 拉你入群

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

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

2010-4-23 12:00:43
x<-c(4.12,5.81,7.63,9.74,10.39,11.92,12.32,12.89,13.54,14.45)
i=2
abs(x)
[1]  4.12  5.81  7.63  9.74 10.39 11.92 12.32 12.89 13.54 14.45

abs(x[i])
[1] 5.81

abs(x[i+1])
[1] 7.63
二维码

扫码加我 拉你入群

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

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

2010-4-23 14:42:33
4# epoh 具体点,si,,,
二维码

扫码加我 拉你入群

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

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

2010-4-24 19:09:22
r中的函数的参数可以向量化
你的参数x要看出一个向量
那么 abs(x)便是一个向量
而abs(x[i+1])是一个数
语句abs(x)=abs(x[i+1])
当x是长度大于1的向量时就会出问题

epoch已经用代码展示的很清楚了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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