代表错误:无效的“次”参数

Posted

技术标签:

【中文标题】代表错误:无效的“次”参数【英文标题】:Error in rep: invalide 'times' argument 【发布时间】:2016-05-30 10:43:23 【问题描述】:

当我尝试运行以下代码进行 10000 次迭代时,我收到以下错误。rep(G1[, 2], G1[, 3]) 中的错误:无效的“次”参数。所以不知道如何更改代码来修复该错误。基本上只是想使用公式为发电机性能创建时间序列,用于一年中 8736 小时的故障时间和修复时间,这样我就可以在发电机运行时以小时为单位获得时间序列。启动条件是发电机在第一个小时运行。当然有一个更优雅的解决方案来模拟这个我只是找不到它。任何意见或帮助将不胜感激。

MTTF<-2940 # MEDIUM TIME TO FAIL(hours)
MTTR<-60 # MEDIUM TIME TO REPAIR (hours)
TTF<--MTTF*log(runif(100))# equation for Time to fail 
TTR<--MTTR*log(runif(100))# equation for Time to repair
mix<-rep(0,length(TTF)+length(TTR))
sw<-rep(0,length(TTF)+length(TTR))
for(i in 1:length(TTF))
mix[2*i-1]<-TTF[i]
sw[2*i-1]<-1
mix[2*i]<-TTR[i]

cmix<-cumsum(mix)
ccmix<-cbind(cmix[1:which(cmix>8736)],sw[1:which(cmix>8736)])
ccmix[dim(ccmix)[1],1]<-8736


G1<-round(ccmix)
# transform binary values
G1[G1 == 1] <- 12 # is the capacity of the generator

G1 <- cbind(G1, c(G1[1,1], diff(G1[,1])))
a1 <- rep(G1[,2], G1[,3]) ## GENERATING 8736 Values

因此,所需的输出是 8736 个值,开启时为 12,关闭时为 0

【问题讨论】:

也许有更好的方法从可用数据生成时间序列 我不明白你想要达到的效果,你能从短输入中创建一个所需输出的例子吗? 1:which(cmix &gt; 8736) XY problem。您的代码显示了解决问题的尝试,但问题本身并不清楚。 肯定有更好的方法可以使用上述公式从生成器生成每小时数据。只想在一代上有 8736 小时值,这样我就知道发电机运行了 4555 小时然后没有运行 160 小时然后再次运行等等.. 可能有更好的方法来做到这一点,但通过 Adela 的回答,您可以修复脚本以使其正常工作。如果您希望有人广泛查看您的代码(看看您是否可以更有效地编写它),请尝试我们的姊妹网站Code Review。 【参考方案1】:

检查G1[,3] 是什么。 times 参数中的负值可能会导致错误

【讨论】:

没有负值 好吧,我运行你的代码,又出现了一个警告。我可能会使用cmix[which(cmix&gt;8736)] 而不是cmix[1:which(cmix&gt;8736)]。但是G1[,3](最后一个)中有负值 也许我的整个方法都是错误的。将检查代码 @Adela:干得好,我花了一段时间来复制它,但问题很简单,确实是由负值引起的。 G1[G1==1] &lt;- 12 检查所有 G1 中的 1 值。如果左列的第一个值为1,而左列的第二个值低于12,则会因此产生负差。解决这个问题的一种方法是G1[,2][G1[,2] == 1] &lt;- 12

以上是关于代表错误:无效的“次”参数的主要内容,如果未能解决你的问题,请参考以下文章

facebook 发送 API 错误代码:100 API 错误描述:无效参数错误消息:“链接”无效

错误的参数个数或无效的参数属性值: 'rs'怎么解决

asp 中 错误的参数个数或无效的参数属性值问题

无效路径参数/查询参数的错误代码应该是啥[重复]

“AADSTS5002730:无效的 JWT 令牌。 Azure Signal R 服务令牌的代表方案中出现“签名算法的密钥不受支持”错误

无效的过程调用或参数