Динамически отображаемое условие для цикла if в R - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь создать условие для цикла 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 голосов
/ 07 сентября 2018

Вам нужно разобрать текст при использовании 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 здесь: Оценить выражение, заданное в виде строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...