具有要更改的功能的名称" i"时间然后在R中的for循环中运行

时间:2017-04-25 19:24:31

标签: r for-loop

我有3个 ARGUMENTLESS 函数,名为f1f2f3。因此,只需f1()运行f1功能,f2()运行f2功能等等。

问题:

我想知道如何才能有一个运行f1到f3的简单for(i in 1:3)循环?

我尝试过以下几点没有成功:

f1 = function() plot( rnorm(1e2) ); f2 = function() plot( rnorm(1e3) ); 
f3 = function() plot( rnorm(1e4) )


for (i in 1:3) {

 paste("f", i, "()", sep = "")

 Sys.sleep(1)

}

3 个答案:

答案 0 :(得分:2)

do.call循环中使用for

for (i in 1:3) {

  do.call(paste0("f", i), args=list())

}

do.call将函数的名称作为字符串和list个参数,并执行该函数。

答案 1 :(得分:2)

我们可以使用get从全局环境中获取功能

for (i in 1:3) {
    get(paste("f", i, sep = ""), envir = .GlobalEnv)()
    Sys.sleep(1)
 }

答案 2 :(得分:0)

这应该可以解决问题:

f1 <- function() plot( rnorm(1e2) )
f2 <- function() plot( rnorm(1e3) ) 
f3 <- function() plot( rnorm(1e4) )
for (i in 1:3) {

 get(paste0("f", i))()

 Sys.sleep(1)

}

无论如何,您也可以将所有功能放入一个名为

的列表中
fun_list <- list(f1 = function() plot( rnorm(1e2) ),
                 f2 = function() plot( rnorm(1e3) ), 
                 f3 = function() plot( rnorm(1e4) ))

然后循环浏览列表。