楼主: xflovespeed
2845 5

[学科前沿] 请问下各位这个R程序错在哪里? [推广有奖]

  • 0关注
  • 0粉丝

初中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
117 点
帖子
22
精华
0
在线时间
10 小时
注册时间
2010-4-18
最后登录
2017-2-14

楼主
xflovespeed 发表于 2010-4-23 03:17:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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值的地方不可以用缺少值>

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

扫码加我 拉你入群

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

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

关键词:R程序 程序

回帖推荐

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

x

wenyu 发表于6楼  查看完整内容

r中的函数的参数可以向量化 你的参数x要看出一个向量 那么 abs(x)便是一个向量 而abs(x)是一个数 语句abs(x)=abs(x) 当x是长度大于1的向量时就会出问题 epoch已经用代码展示的很清楚了

本帖被以下文库推荐

沙发
epoh 发表于 2010-4-23 09:51:10
while (abs(x[i]) == abs(x[i + 1]))

藤椅
xflovespeed 发表于 2010-4-23 11:39:17
楼上的说具体点啊?

板凳
epoh 发表于 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
已有 1 人评分经验 论坛币 收起 理由
胖胖小龟宝 + 10 + 10 热心帮助其他会员

总评分: 经验 + 10  论坛币 + 10   查看全部评分

报纸
xflovespeed 发表于 2010-4-23 14:42:33
4# epoh 具体点,si,,,

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

epoch已经用代码展示的很清楚了
已有 1 人评分经验 论坛币 收起 理由
胖胖小龟宝 + 10 + 10 热心帮助其他会员

总评分: 经验 + 10  论坛币 + 10   查看全部评分

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-3 06:45