Data.table: [R-Forge # 5580] невидимые функции становятся видимыми в j-выражении

Созданный на 8 июн. 2014  ·  8Комментарии  ·  Источник: Rdatatable/data.table

Представлено: Эдуардом Антоняном; Присвоено: никому; Ссылка на R-Forge

fn = function() {invisible(1:5)}

dt[, fn()]
# [1] 1 2 3 4 5

Это довольно неприятно при использовании, например, boxplot .

bug wontfix

Самый полезный комментарий

Нет, это потому, что R внутренне заставляет видимость [ отличие от with() . См. FAQ 2.22 .

Все 8 Комментарий

@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 .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги