Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 警告:要替换的项目数不是替换长度的倍数_R - Fatal编程技术网

R 警告:要替换的项目数不是替换长度的倍数

R 警告:要替换的项目数不是替换长度的倍数,r,R,我不明白我的代码运行循环有什么问题。请帮忙 P10<-numeric(2000) for(i in 1:2000){ r <- rnorm(10, 0.03, 0.005) P10[i] <- 20 * exp(cumsum(r)) } Warning in P10[i] <- 20 * exp(cumsum(r)): number of items to replace is not ## a multiple of replacement length

我不明白我的代码运行循环有什么问题。请帮忙

P10<-numeric(2000) 
for(i in 1:2000){
  r <- rnorm(10, 0.03, 0.005)
  P10[i] <- 20 * exp(cumsum(r))
}

Warning in P10[i] <- 20 * exp(cumsum(r)): number of items to replace is not
## a multiple of replacement length

你可能想做这样的事情:

P10 <- lapply(1:2000, function(x) {
  r <- rnorm(10, 0.03, 0.005)
  20 * exp(cumsum(r))
})

P10 <- unlist(P10)
这是相似的,但得到的矩阵是10*2000

P10 <- replicate(2000, {
  r <- rnorm(10, 0.03, 0.005)
  20 * exp(cumsum(r))
})

不确定您期望的输出应该是什么样子。例如,如果您将P10[i]重命名为P,脚本将在没有警告的情况下运行。您好,wolsx,如果您可以提供具有预期输出的最小示例,这将有所帮助,请参阅这里不清楚您到底想做什么。出现此警告是因为您试图将expcumsumr创建的10个项目的列表分配到一个条目中。下面是对此进行故障排除时的建议。我假设您希望P10[I]包含一个数字。手动运行这个:我找到了!谢谢大家,或者更快:20*EXPAPLYMATRIXRNORMM10*2000,nr=10,2,求和。由于它只进行了一次随机拉动,而不是2000次小的随机拉动,因此使用更大的随机拉动应该会更快。仅供参考:我将其显示为10*2000,以声明形式,目的是生成足够的矩阵。10在10*中显然应该是相同的数字,并且nr=10。