有条件运行语句



我想只在特定条件下运行语句。问题是,语句应该是一个循环(或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)

相关内容

  • 没有找到相关文章

最新更新