相关疑难解决方法(0)

switch()语句用法

我对R中的switch语句有点困惑.只需在googling函数中我得到一个例子,如下所示:

switch的一个常见用途是根据函数的一个参数的字符值进行分支.

 > centre <- function(x, type) {
 + switch(type,
 +        mean = mean(x),
 +        median = median(x),
 +        trimmed = mean(x, trim = .1))
 + }
 > x <- rcauchy(10)
 > centre(x, "mean")
 [1] 0.8760325
 > centre(x, "median")
 [1] 0.5360891
 > centre(x, "trimmed")
 [1] 0.6086504
Run Code Online (Sandbox Code Playgroud)

然而,这似乎只是if为每个指定了一堆语句type

这就是全部switch()吗?有人可以给我更多的例子和更好的应用吗?

r switch-statement

104
推荐指数
1
解决办法
15万
查看次数

R中的秒表功能

是否有类似于MATLAB的tic/toc的R计时器或秒表功能?

matlab r

24
推荐指数
5
解决办法
1万
查看次数

在R中获得以毫秒为单位的执行时间

我已经阅读了这个解决方案 tic(), toc() functions

tic <- function(gcFirst = TRUE, type=c("elapsed", "user.self", "sys.self"))
{
   type <- match.arg(type)
   assign(".type", type, envir=baseenv())
   if(gcFirst) gc(FALSE)
   tic <- proc.time()[type]         
   assign(".tic", tic, envir=baseenv())
   invisible(tic)
}

toc <- function()
{
   type <- get(".type", envir=baseenv())
   toc <- proc.time()[type]
   tic <- get(".tic", envir=baseenv())
   print(toc - tic)
   invisible(toc)
}




tic();
-----code----
toc();


elapsed 
   0.15 
Run Code Online (Sandbox Code Playgroud)

但我想在几毫秒内获得很多精度?

我也在用这个

ptm <- proc.time()
---code
proc.time() - ptm
Run Code Online (Sandbox Code Playgroud)

得到这个

   user  system elapsed 
   1.55    0.25    1.84 
Run Code Online (Sandbox Code Playgroud)

如何获得更多小数或更精确?

benchmarking r execution-time milliseconds

22
推荐指数
2
解决办法
2万
查看次数

使用Sys.time()计时R代码

我可以使用以下代码运行一段代码5或10秒:

period <- 10  ## minimum time (in seconds) that the loop should run for
tm <- Sys.time()  ## starting data & time
while(Sys.time() - tm < period) print(Sys.time())
Run Code Online (Sandbox Code Playgroud)

代码运行良好5或10秒.但是当我将周期值替换为60以使其运行一分钟时,代码永远不会停止.怎么了?

time r while-loop

9
推荐指数
1
解决办法
3787
查看次数

使用 system.time() 对 R 代码计时时出现“未找到对象”和“意外符号”错误

我正在阅读这本书:《R 编程实践》。以下代码是直接从书中粘贴的,但不会在 RStudio 中运行,我试图理解为什么。

system.time(
output <- rep(NA, 1000000) for (i in 1:1000000) {
        output[i] <- i + 1
      }
)
Run Code Online (Sandbox Code Playgroud)

我明白了:

> system.time(
+     output <- rep(NA, 1000000) for (i in 1:1000000) {
Error: unexpected 'for' in:
"system.time(
    output <- rep(NA, 1000000) for"
>         output[i] <- i + 1
Error: object 'i' not found
>     }
Error: unexpected '}' in "    }"
> )
Error: unexpected ')' in ")"
Run Code Online (Sandbox Code Playgroud)

r

5
推荐指数
1
解决办法
915
查看次数

打印脚本在R中运行的时间

对于简单的自制基准测试,我想在我的R脚本中添加一个计时器,以便我知道它运行了多长时间.这是一个在大量数据上释放的脚本,因此可能需要一个多小时才能完成.因此,我正在寻找一种方法,告诉我脚本运行的确切时间.

我得到的想法是:

old = getCurrentTime()

# Do the rest of my script

(new = getCurrentTime() - old)
Run Code Online (Sandbox Code Playgroud)

我不知道这是否有意义,但似乎最好的方法是在没有计数器在后台运行的情况下,通过比较脚本的开始时间和时间与结束并打印差异.但是,我不确定如何在R中获取时间,获得差异并将其格式化hh:mm:ss.

time r

3
推荐指数
2
解决办法
7900
查看次数