我正在尝试为未预定义的if循环创建条件。条件的“长度”取决于我的列表的长度,其中存储了先前的计算值。
您可以在我的代码中看到下面的操作。
我试图用一些函数(expression()
,eval()
...)转换我的角色条件,以便条件对于if循环是可读的。但没有任何作用......
所以我希望你能帮助我解决我的问题。
我的代码:
# the list with prior calculated values
List=list(0.96,0.89,0.78)
# rendering the condition
condition=character()
for (m in 1:length(List)) {
if (m==length(List)) {
condition=paste0(condition,"List[[",m,"]]>=0.6")
} else {
condition=paste0(condition,"List[[",m,"]]>=0.6 && ")
} # end if-loop
} # end for-loop
# to see what the condition looks like
print(condition)
# the just rendered condition in the if loop
if(condition) {
print("do this ...")
} else {
print("do that ...")
} # end if-loop
使用eval时需要解析文本:
eval(parse(text=condition))
这在您的示例中返回TRUE,因此您可以按如下方式使用它:
if(eval(parse(text=condition))) {
print("do this ...")
} else {
print("do that ...")
} # end if-loop
输出:
[1] "do this ..."
你可以在这里找到更多关于eval的信息:Evaluate expression given as a string