我有3个 ARGUMENTLESS 函数,名为f1
,f2
和f3
。因此,只需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)
}
答案 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) ))
然后循环浏览列表。