R

时间:2018-09-07 09:29:09

标签: r if-statement conditional-statements

我正在尝试为未定义的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

1 个答案:

答案 0 :(得分:2)

使用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