全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1059 6
2016-01-14
悬赏 2 个论坛币 已解决
sample_candidate=function(chain_index,chain_num, cr,cr_index,cr_num,gen_index,gen_num,
                          jumprate_table,jumpstep,limits, pair_num,par_num, z)
{
  
  pair<-vector(mode="numeric")
  jump_dim<-vector(mode="numeric")
  noise_e<-vector(mode="numeric")
  eps<-vector(mode="numeric")

  r<-rep(0,2*pair_num)
  
  #Used to calculate E following a uniform distribution on (-B,+B).
  #Because B is currently zero, the noise term is suppressed.
  b <- 0.0
  
  # Pick pairs of other chains for crossover.
  r<-pairs_choose(pair_num, chain_num,chain_index)
  
  #Determine the jump rate.
  
  jumprate_choose( cr, cr_index, cr_num, gen_index, jump_dim, jump_num,
                   jumprate, jumprate_table, jumpstep, par_num )
  
  #Calculate E in equation 4 of Vrugt.
  
  for (i in 1:par_num)
  {
    noise_e <- b * ( 2.0 * runif(1) - 1.0 )
  }
  # Get epsilon value from multinormal distribution
  av<- 0.0
  sd<- 10^-10
  for ( i in 1:par_num)
  {
    eps <- rnorm(1, av, sd )
  }
  #Generate the candidate sample ZP based on equation 4 of Vrugt.
  diff<-diff_compute(chain_num, gen_index,gen_num, jump_dim, jump_num,
                     pair_num,par_num,r, z)
  zp<-rep(0,par_num)
  for ( i in 1:par_num)
  {
    zp <- z[i+(chain_index-1)*par_num+(gen_index-1)*par_num*chain_num]
  }
  
for ( i in 1:par_num)
  {
    zp <- zp + ( 1.0 + noise_e ) * jumprate * diff + eps
  }
  
  #Enforce limits on the sample ZP.
  
  zp<-sample_limits(limits, par_num,zp)
  
  #  rm (zp,diff)
  
zp

  
}
zp<-sample_candidate(chain_index,chain_num, cr,cr_index,cr_num,gen_index,gen_num,
                          jumprate_table,jumpstep,limits, pair_num,par_num, z)

zp
上面这个函数单独执行每一条语句是对的,但是像后面调用的时候就出现了后面黄色的语句没有执行,这是怎么回事呢?求高人

最佳答案

suimong 查看完整内容

题主提供一下调用sample_candidate函数里要用的那些参数吧,方便别人帮你debug
二维码

扫码加我 拉你入群

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

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

全部回复
2016-1-14 12:41:16
题主提供一下调用sample_candidate函数里要用的那些参数吧,方便别人帮你debug
二维码

扫码加我 拉你入群

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

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

2016-1-14 13:46:35
suimong 发表于 2016-1-14 13:37
题主提供一下调用sample_candidate函数里要用的那些参数吧,方便别人帮你debug
其实我就是想知道为什么后面的不在调用的时候显示呢
二维码

扫码加我 拉你入群

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

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

2016-1-14 14:10:52
在调用的时候显示什么?你的for循环里是赋值语句,函数体里如果没有print/cat语句的话一般是不会在console上打印任何东西的。
二维码

扫码加我 拉你入群

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

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

2016-1-14 14:19:59
suimong 发表于 2016-1-14 14:10
在调用的时候显示什么?你的for循环里是赋值语句,函数体里如果没有print/cat语句的话一般是不会在console上 ...
我知道,就是我把这个函数里面一条一条运行的的时候,加上后面的两句,出来的结果是对的,但是如果我先运行这个函数,再运行后面的两句的时候,出来的结果就不对了
二维码

扫码加我 拉你入群

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

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

2016-1-14 14:51:26
你的意思是你把原来的逻辑作为单独的语句运行得到了正确的结果,但是把它们封装进了一个函数以后用函数调用的话就得出了错误的结果是吧?可是你要让大家能够重现你的问题的话,你得让大家也能够调用到函数吧?没有chain_index, chain_num等等这些参数,我们根本没法调用你的函数啊
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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