Я хочу запустить скрипт, который оценивает выражение в зависимости от логической переменной либо внутри цикла for, либо только один раз.
Код должен выглядеть примерно так:
forCond <- function(..., cond, expr) ifelse(cond, for(...) expr, expr)
Но я не совсем уверен, как работает многоточие с тремя точками. Моя идея состояла в том, чтобы использовать это, чтобы передать что-то вроде i in vec
для функции. И аргумент (ы), передаваемый ...
, должен игнорироваться, если cond
равен FALSE
.
Я хочу, чтобы мой код
forCond(i in vec, cond, expr)
был эквивалентен
if (cond) {
for(i in vec)
expr
} else {
expr
}
Как мне сделать это элегантно? Или есть лучший способ сделать это, а именно, вычислить выражение несколько раз (с разными переменными счета), возможно, используя что-то вроде lapply?
Я приведу пример:
cond <- TRUE
vec <- 1:10
i <- 1 # Initialize i in case cond is FALSE
forCond(i in vec, cond,
{
print(i)
print(2 * i)
})
Предполагается, что это то же самое, что и
for(i in vec) {
print(i)
print(2 * i)
}
И в случае, если cond
равно FALSE
, я хочу что-то вроде
i <- 1
print(i)
print(2 * i)