动态地/有条件地将R代码块替换在大表达式的中间

动态地/有条件地将R代码块替换在大表达式的中间,r,R,我想知道R中是否有一个功能,可以有条件地修改复杂表达式的细节,而不必在另一个if循环中重复整个计算,只需稍作修改。我想编写伪代码,例如(例如,具有多核功能的开关-但这只是一个示例): 这已经起作用了 我要寻找的是一种在一大块代码中间改变操作符“my_操作符”的方法,这种方法改变了代码的工作方式。任何想法都非常感谢 您需要使用语法来创建二进制运算符,并且需要使用反勾号来防止不必要的解析 if(a){ `%my_operator%` <- `%do%` }else{ `%my_oper

我想知道R中是否有一个功能,可以有条件地修改复杂表达式的细节,而不必在另一个if循环中重复整个计算,只需稍作修改。我想编写伪代码,例如(例如,具有多核功能的开关-但这只是一个示例):

这已经起作用了


我要寻找的是一种在一大块代码中间改变操作符“my_操作符”的方法,这种方法改变了代码的工作方式。任何想法都非常感谢

您需要使用语法来创建二进制运算符,并且需要使用反勾号来防止不必要的解析

if(a){
  `%my_operator%` <- `%do%`
}else{
  `%my_operator%` <- `%dopar%`
}
if(a){

`%my_operator%`或
`%my_operator%`非常好!在定义后,我只需在foreach括号后使用%my_operator%。它可以根据需要工作,非常感谢!@Frank Yeah,可以。我倾向于选择我编写的格式。它可能更长,可能会复制一点代码,但这只是我的偏好。我倾向于考虑如果
更多地是一个控制流结构,而不是它本身的函数,那么我通常不会公平地使用
值。我认为它是一个穷人的三元运算符:@Frank我想人们可以做一些类似
`%?%`的事情。旁注:如果你已经完成
if,你不能在单独的行上放置
e> 语句。您需要在else语句行的开头加上if的右括号。谢谢,我的r技能有点生疏,我确实忘记了这个细节。您的编辑更适合新问题。但它基本上取决于如何解析事物。如果您能完成解析并开始在if块的末尾执行代码,那么else需要与右大括号在同一行。如果你在另一个if语句、循环或函数中……当解释器读入完代码后,你不会立即执行代码,那么你可以将它放在另一行。我个人不这么认为I don’我不喜欢这样做,因为它只允许在某些情况下使用,而且会咬到你。非常感谢,Dason!…你是对的:如果你觉得可以的话,我将把它放在一个单独的问题中,然后复制你的答案。或者你更喜欢自己回答吗?提出一个新的问题(虽然事实上我99%确定已经有一个问题了,所以它可能会作为一个副本关闭)等待答案-你会得到一些可能比我的解释更好的答案。但就像我说的,无论如何它可能是一个副本。。
stopcluster = "stopCluster(cl);"
eval(parse(text=paste(stopcluster, sep = "")))
if(a){
  `%my_operator%` <- `%do%`
}else{
  `%my_operator%` <- `%dopar%`
}