在R中,为什么system.time不会在循环中工作?

时间:2018-01-25 06:49:17

标签: r time

我想衡量总结所需的时间,并比较添加的内容如何改变时间。例如,我希望看到有1,2或3个数字相加的时间。

for (j in 1:3)
  print(j)
  user_time <- system.time(my_sum_func(j))[1]
  print(user_time)

我希望获得如下输出:

> for (j in 1:3)
+   print(j)
[1] 1
>   user_time <- system.time(my_sum_func(j))[1]
>   print(user_time)
user.self 
        0 #or some  other time
+   print(j)
[1] 2
>   user_time <- system.time(my_sum_func(j))[1]
>   print(user_time)
user.self 
        0 #or some  other time
+   print(j)
[1] 3
>   user_time <- system.time(my_sum_func(j))[1]
>   print(user_time)
user.self 
        0 #or some  other time

但实际上我得到了:

> for (j in 1:3)
+   print(j)
[1] 1
[1] 2
[1] 3
>   user_time <- system.time(my_sum_func(j))[1]
>   print(user_time)
user.self 
        0 

系统时间似乎只在循环的最后一次迭代中运行。

如何为每次不同的测试获取用户时间?

1 个答案:

答案 0 :(得分:0)

您在每次迭代时都会覆盖user_time。改为创建一个列表并在循环期间附加值。接下来,您可以根据需要比较时间或总和

user_time <- list()
for (j in 1:3) {
...
user_time[[(length(user_time) + 1)]] <- system.time(my_sum_func(j))
...
}