全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2311 13
2015-05-07

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

  
二维码

扫码加我 拉你入群

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

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

全部回复
2015-5-7 15:51:53
jiulm 发表于 2015-5-7 15:31
mf1
没懂你要干什么 而且你的代码有错误吧 mf2里面的if后面少了东西
二维码

扫码加我 拉你入群

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

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

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
二维码

扫码加我 拉你入群

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

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

2015-5-7 16:44:38
zhangzhangmen 发表于 2015-5-7 16:19
mf1
是的,谢谢
二维码

扫码加我 拉你入群

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

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

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)
}
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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