将
我想只在特定条件下运行语句。问题是,语句应该是一个循环(或if条件等)。例子:
X<-TRUE
if(X){
"for(i in 1:4){
a<-i"
}else{
a<-5
}
print(a)
if(X){
"}"
}
此处" "
中的部件只有在X==TRUE
时才能运行。我试过使用eval()
-功能,但它不是为此而做的。这可以在R中完成吗?
将print(a)
放入函数中,使用lapply()
(或者放弃lapply
,如果你的函数可以处理向量输入)
这样的
### This function could be anything
a_function_you_made <- function(x) print(x)
X <- TRUE
### If X, apply the function to every value in 1:4
if(X){
# a_function_you_made(1:4) # << this will work if your function iterates over a vector (true for print)())
lapply(as.list(1:4), a_function_you_made)# << storing inputs in a list is more generalisable
### Otherwise just run the function with value five
}else{
a_function_you_made(5)
}
有几点需要注意:
- 如果你的函数迭代一个向量,你不需要使用
lapply
。这对于打印是正确的,因此在上面的示例中,您可以只运行a_function_you_made(1:4)
- 我已经使用
print
与你的代码的一致性,但它是一个坏的函数来演示lapply
,因为它被用于它的副作用,但默默地返回它的输入,这意味着lapply
打印每个值,然后返回as.list(1:4)
。