R - 简单循环不起作用:没有中断/下一个循环,跳转到顶层

塞西莉亚·博努奇

我知道这可能是一个简单的问题,但我正在努力学习和改进。当我尝试这段代码时,它给了我错误:“没有中断/下一个循环,跳到顶层”。有人可以建议为什么并帮助我吗?非常感谢。

x_1 <- rnorm(100)
x_2 <- rnorm(10000)
x_3 <- rnorm(1000000)

to_evaluate <- list(x_1, x_2, x_3)

speed_test <- for (i in to_evaluate) {
  microbenchmark(mean_loop(i), mean_mat(i), mean(i))
} 
print(speed_test)

mean_loop 和 mean_mat 的代码:

x <- c(1:11)

mean_loop <- function(x) {
  
  sum_of_x <- 0
  
  for(i in x){
    sum_of_x <- sum_of_x + x[i]
  }
  
  mean_of_x <- sum_of_x/length(x)
  return(mean_of_x)
}

mean_mat <- function(x) {
sum(diag(length(x))%*%x)/length(x)
}

该函数microbenchmark(来自包microbenchmark)可让您测量代码运行的速度。如果你给它代码来评估,它会评估它 100 次,并返回代码运行时间的汇总统计信息。如果给它多个表达式,它会为每个表达式执行此操作。

罗纳克·沙阿

这对我来说使用问题中的函数定义 -

x_1 <- rnorm(10)
x_2 <- rnorm(100)
x_3 <- rnorm(1000)
library(microbenchmark)
to_evaluate <- list(x_1, x_2, x_3)

result <- vector('list', length(to_evaluate))

for (i in seq_along(to_evaluate)) {
  val <- to_evaluate[[i]]
  result[[i]] <- microbenchmark(mean_loop(val), mean_mat(val), mean(val))
} 

result

#[[1]]
#Unit: microseconds
#           expr   min     lq    mean median    uq     max neval cld
# mean_loop(val) 2.818 3.2495 7.62632  4.204 5.847  41.214   100   a
#  mean_mat(val) 2.547 2.9765 7.90376  3.571 4.940  93.155   100   a
#      mean(val) 1.896 2.1700 6.59605  2.818 4.204 116.467   100   a

#[[2]]
#Unit: microseconds
#           expr    min      lq     mean median      uq     max neval cld
 #mean_loop(val) 49.368 89.8705 92.81099 92.820 99.6505 179.400   100   c
 # mean_mat(val) 18.968 50.7335 55.61163 52.987 55.5770 141.363   100  b 
 #     mean(val)  2.090  2.2815  3.87982  2.803  3.3115  33.779   100 a  

#[[3]]
#Unit: microseconds
#           expr      min        lq       mean   median        uq       max neval cld
# mean_loop(val) 1359.527 1511.9295 3312.36578 1835.326 2970.1350 16455.048   100   b
#  mean_mat(val) 1713.178 2155.3815 4032.53143 2352.858 2739.6650 19783.264   100   b
#      mean(val)    3.708    4.6695   16.39451   14.881   21.8355   162.184   100  a 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R for循环跳转到下一个迭代

循环列表以在R中分配名称不起作用

For循环笔画在R中不起作用

R中的“ for循环”中的“ while循环”不起作用?

在R中编写一个函数来循环方程式,并在下一个循环中使用上一个值

尝试捕获以循环-继续下一个r dataRetrieval

在R的下一个工作日收益

r在for循环中打印列表的下一个元素

为什么下一个功能在我的R Studio中不起作用

从当前R减去下一个值

在R中找到下一个实例的时间

为什么循环中的事务中的救援块中的下一个调用不起作用?

从另一个没有循环的矩阵的随机块行创建矩阵(在R中)?

跳转到for循环Cuda中的下一个块

调用R中的下一个循环中的循环中产生和命名的变量

R for 循环在另一个

在 R 中嵌套 if else 语句。不断收到“错误:没有要返回的函数,跳转到顶层”

解释 R 中的简单循环

VBA 下一个循环不起作用

Swift 如何跳转到下一个 uitextfield

一个简单的“paste0”命令在“draw”命令中不起作用?(复杂热图,r)

如何跳转到下一个 TODO 存根?

如何使用R中的下一个函数跳过for循环中的迭代

下一个没有 SSR 的 Js 动态导入不起作用

R 下一个素数包括开始

是否有 R 函数来查找列表中元素的下一个位置

在 for 循环中,如果用户在 R 中的时间戳之前和之后都没有数据,则移动到下一个循环

python的一个简单循环

将下一个数字添加到R中向量中的前一个数字,For循环