Как мне избавиться от ПРИМЕЧАНИЕ, сгенерированного проверкой R CMD при использовании, например, ddply в моем пакете?

У меня есть проблема, похожая, но отличная от Как я могу обрабатывать R CMD, проверяя отсутствие видимой привязки для глобальных переменных, когда мой синтаксис ggplot2 разумен?.

В этом случае все работает гладко, используя aes_string вместо aes. Однако с plyr afaik это невозможно.

Проблема возникает, когда я ссылаюсь на имена столбцов в своем фрейме данных, например, через ddply.

ddply(mydf, .(VarA, VarB, VarC, VarD), summarize, sum = sum(VarE))
#
# MyPackage: no visible binding for
#   global variable ‘VarA’

Этот код полностью действителен и разумен, и хотя я понимаю использование ПРИМЕЧАНИЕ, они все еще загромождают другие сообщения в окнах вывода, что затрудняет разработку пакета и фактически заставляет разработчиков игнорировать ПРИМЕЧАНИЯ.

Каков правильный способ избавиться от этих заметок? Или, в качестве альтернативы, как правильно написать код таким образом, чтобы проверка R CMD принимала без указания ПРИМЕЧАНИЕ?

Лучший, Майкл


person Dr. Mike    schedule 04.03.2015    source источник


Ответы (2)


Есть несколько обходных путей. Проще всего просто присвоить NULL всем переменным без видимой привязки.

VarA <- VarB <- VarC <- VarD <- VarE <- NULL

Более элегантное решение — использовать as.quoted и substitute. ОБНОВЛЕНИЕ от @Dr. Майк: вызов as.quoted нужно инкапсулировать в c().

ddply(mydf, 
      as.quoted(c('VarA', 'VarB', 'VarC', 'VarD')), 
      summarize, 
      sum = sum(substitute(VarE)))
person shadow    schedule 04.03.2015

Вы можете избежать предупреждений о проверке CMD, объявив глобальные переменные:

globalVariables(c("VarA", "VarB"))

Пожалуйста, прочтите ?globalVariables перед использованием и убедитесь, что в ОПИСАНИЕ добавлена ​​соответствующая версия R.

Всегда предпочтительнее избегать использования глобальных переменных в кавычках.

person Axeman    schedule 16.01.2017