R中的if循环的动态渲染条件

问题描述 投票:1回答:1

我正在尝试为未预定义的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
r if-statement conditional-statements
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.