代表错误:无效的“次”参数
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 > 8736)
XY problem。您的代码显示了解决问题的尝试,但问题本身并不清楚。
肯定有更好的方法可以使用上述公式从生成器生成每小时数据。只想在一代上有 8736 小时值,这样我就知道发电机运行了 4555 小时然后没有运行 160 小时然后再次运行等等..
可能有更好的方法来做到这一点,但通过 Adela 的回答,您可以修复脚本以使其正常工作。如果您希望有人广泛查看您的代码(看看您是否可以更有效地编写它),请尝试我们的姊妹网站Code Review。
【参考方案1】:
检查G1[,3]
是什么。 times
参数中的负值可能会导致错误
【讨论】:
没有负值 好吧,我运行你的代码,又出现了一个警告。我可能会使用cmix[which(cmix>8736)]
而不是cmix[1:which(cmix>8736)]
。但是G1[,3]
(最后一个)中有负值
也许我的整个方法都是错误的。将检查代码
@Adela:干得好,我花了一段时间来复制它,但问题很简单,确实是由负值引起的。 G1[G1==1] <- 12
检查所有 G1
中的 1
值。如果左列的第一个值为1
,而左列的第二个值低于12
,则会因此产生负差。解决这个问题的一种方法是G1[,2][G1[,2] == 1] <- 12
。以上是关于代表错误:无效的“次”参数的主要内容,如果未能解决你的问题,请参考以下文章
facebook 发送 API 错误代码:100 API 错误描述:无效参数错误消息:“链接”无效
“AADSTS5002730:无效的 JWT 令牌。 Azure Signal R 服务令牌的代表方案中出现“签名算法的密钥不受支持”错误