楼主: jiulm
2364 13

[问答] r语言小白,请大家帮我看看哪里出了问题? [推广有奖]

  • 0关注
  • 0粉丝

初中生

47%

还不是VIP/贵宾

-

威望
0
论坛币
522 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
128 点
帖子
13
精华
0
在线时间
9 小时
注册时间
2015-4-12
最后登录
2021-5-30

楼主
jiulm 发表于 2015-5-7 15:31:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

mf1<-function(a){

n<-length(a)

for(i in 2:n){

   a<-mf2(a,i)

  }

return(a)

}

mf2<-function(a,i){

while(i>=2){

   if(a<a[i-1]){

     tmp<-a[i-1]

     a[i-1]<-a

     a<-tmp

     i<-i-1

    }

  }

}

    

> a<-5:1

  

> a

  

[1] 5 4 3 2 1

  

> mf1(a)

  

Error  in if (a < a[i - 1]) { : argument is of length zero

  
二维码

扫码加我 拉你入群

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

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

关键词:R语言 function return Error

沙发
亚米UM 发表于 2015-5-7 15:51:53 来自手机
jiulm 发表于 2015-5-7 15:31
mf1
没懂你要干什么 而且你的代码有错误吧 mf2里面的if后面少了东西

藤椅
zhangzhangmen 发表于 2015-5-7 16:19:27
mf1<-function(a){       
n<-length(a)
for(i in 2:n){
  while(i>=2){
    if(a[i]<a[i-1]){
      tmp<-a[i-1]
      a[i-1]<-a[i]
      a[i]<-tmp
      i<-i-1
    }
  }
}
return(a)
}

是要这样的结果吗
> a<-5:1
> mf1(a)
[1] 1 2 3 4 5

板凳
jiulm 发表于 2015-5-7 16:44:38
zhangzhangmen 发表于 2015-5-7 16:19
mf1
是的,谢谢

报纸
zhangzhangmen 发表于 2015-5-7 21:11:56
额,上面那段代码还是有问题的,i<-i-1的位置不对,不能放在if语句里面。应该是:
mf1<-function(a){        
n<-length(a)
for(i in 2:n){
  while(i>=2){
    if(a<a[i-1]){
      tmp<-a[i-1]
      a[i-1]<-a
      a<-tmp
    }
    i<-i-1
  }
}
return(a)
}

或者,如果像你那样把mf1和mf2分开写,那就是:
mf1<-function(a)
{        
        n<-length(a)
        for(i in 2:n) a<-mf2(a,i)
        return(a)
}

mf2<-function(a,i)
{
        while(i>=2)
        {
                if(a<a[i-1])
                {
                      tmp<-a[i-1]
                      a[i-1]<-a
                      a<-tmp
                    }
                i<-i-1
          }
        return(a)
}

地板
zhangzhangmen 发表于 2015-5-7 21:28:59
zhangzhangmen 发表于 2015-5-7 21:11
额,上面那段代码还是有问题的,i
不知道咋回事,显示出来的代码和我打的代码有点不一样,而且改不过来。if语句那一块是a【i】,而不是a。

7
xucaifeng66 发表于 2015-5-8 10:09:21
zhangzhangmen 发表于 2015-5-7 21:11
额,上面那段代码还是有问题的,i
果然是大牛

8
xucaifeng66 发表于 2015-5-8 10:09:57
能问下这样做的目的是什么吗???

9
zhangzhangmen 发表于 2015-5-8 10:14:31
xucaifeng66 发表于 2015-5-8 10:09
能问下这样做的目的是什么吗???
对数据进行排序。其实可以直接用sort函数就实现了,楼主估计是用来练习编程的。

10
xucaifeng66 发表于 2015-5-8 10:18:37
zhangzhangmen 发表于 2015-5-8 10:14
对数据进行排序。其实可以直接用sort函数就实现了,楼主估计是用来练习编程的。
那还要再加些参数啊,从小到大再排一次

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

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