Представлено: Эдуардом Антоняном; Присвоено: никому; Ссылка на R-Forge
fn = function() {invisible(1:5)}
dt[, fn()]
# [1] 1 2 3 4 5
Это довольно неприятно при использовании, например, boxplot
.
@eantonya не могли бы вы привести пример использования с boxplot
?
Проблема здесь очень сильно связана с :=
, как описано в FAQ 2.22 .
Лучшее, что мы можем сделать, - это незаметно вернуть _iff_ fn()
возвращает data.table
. В противном случае нам придется изменить _все_ методы печати так же, как print.data.table
умело использует .global$print
.
Я добавил метку "не буду исправлять". Поскольку это проблема с тем, как база R заставляет видимость [
. Если вы согласны, мы можем закрыть это как таковое (если нет альтернативы, которую мы можем придумать).
Также отметьте @mattdowle .
Я думаю, это может быть идентично # 1471. Только что нашел это.
Жаль, что R не возвращает что-то с атрибутом "invisible"
если это результат invisible
. Это упростило бы задачу.
Вернувшись к http://stackoverflow.com/a/36093766/403310, который ссылается здесь. Мы могли бы вернуться к FAQ 2.18 (решение там не сработало для меня, когда я только тестировал его), а также к 2.22, и с тех пор, как мы в последний раз смотрели, прошло больше года, поэтому может потребоваться еще одна попытка.
Хм. Только что заметил, что with(dt, fn())
_doesn't_ выводит результат. Полагаю, это больше всего связано со всей проблемой .global$print
.
Нет, это потому, что R внутренне заставляет видимость [
отличие от with()
. См. FAQ 2.22 .
Разве здесь не работает то же глобальное подавление печати, которое работает с :=
?
согласно комментарию Аруна, мы не можем ничего сделать с [
R, форсирующим видимость, решение состоит в том, чтобы обернуть ваше выражение data.table в invisible
.
Самый полезный комментарий
Нет, это потому, что R внутренне заставляет видимость
[
отличие отwith()
. См. FAQ 2.22 .