Когда вы делаете ifelse(x > 0, log(x), 0)
, R вычисляет log(x)
:
> x <- c(2, -1, 3)
> ifelse(x > 0, log(x), 0)
[1] 0.6931472 0.0000000 1.0986123
Warning message:
In log(x) : NaNs produced
Но в результате вы не получите NaN
, вы получите 0
для значений, соответствующих [ 116].
Это утверждение ifelse
эквивалентно
ifelse(c(TRUE, FALSE, TRUE), c(log(2), log(-1), log(3)), c(0,0,0))
R не отбрасывает вычисления значений второго аргумента, для которого значение первого аргумента равно FALSE
.
Полагая, что отдельные таблицы для проектов и опубликованных статей были бы по существу дубликатами друг друга, я склонюсь ко всего одной таблице со столбцом состояния для дифференциации между двумя.
Я делаю составление на Википедию путь: Я сохраняю первую версию, и вся модификация сохранила (на основе времени или явной пользовательской команды) как следующая версия. После т.е. публикация можно удалить черновой график - или нет.
Если Вы сохраняете данные в базе данных, я думаю, что хорошо использовать ту же таблицу (можно избежать конфликтов схемы), и используйте версию/состояние для отслеживания проектов жизненного цикла.