首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写算法时出错

编写算法时出错
EN

Stack Overflow用户
提问于 2014-01-01 14:46:04
回答 1查看 132关注 0票数 0

我一直试图写一个算法,以产生一些观察,但我面临一个错误,我不知道如何修复。您可以在下面找到我的代码,如果您需要检查我的算法应该做什么,请咨询这个link

代码语言:javascript
复制
n = 10
u1 = runif(n)
u2 = runif(n)
alpha = 2
beta = 2
v1 = u1^(1/alpha)
v2 = u2^(1/beta)
w = v1+v2
x = rep(0,n)
for(i in 1:n){ if(w[i] <= 1){x[i] = v1/w}}

Warning messages:
1: In x[i] = v1/w :
  number of items to replace is not a multiple of replacement length

你能告诉我如何在不改变算法性质的情况下解决这个问题吗?提前谢谢你。

祝大家新年快乐!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-01 16:59:17

问题是,您为x[i]分配了一个向量,从而导致了所看到的错误。你的意思可能是:

代码语言:javascript
复制
for(i in 1:n){ if(w[i] <= 1){x[i] = v1[i]/w[i]}}

更好的替代办法是:

代码语言:javascript
复制
x = ifelse(w <= 1, v1 / w, x)

一些一般性意见:

  • 通常不需要for循环,使用矢量化。在本例中,使用的是ifelse
  • 使用较长的变量名,这将使您的代码更易于阅读。
  • 使用更多的空格,这也使代码更容易阅读。
  • 在适当的情况下使用缩进,例如对于for循环: 对于(i in 1:n) { if(wi <= 1) xi = v1i / wi } 这也提高了可读性。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20869793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档