У меня есть пакет для R, который я разрабатывал для Linux, и настало ужасное время, когда я тестирую его под Windows.
Документация составлена с использованием roxygen, и я использую cygwin для сборки пакета.
Дело в том, что когда я roxygenise('test-package')
, roxygen усекает раздел документации \usage
до одного символа. Это делает это с некоторыми, но не со всеми моими функциями, и я не могу понять шаблон.
Этого не происходит, если запустить ту же команду (например, roxygenise('test-package')
из приглашения R) в Linux или Windows - просто Cygwin под Windows (использование R devtools + командная строка из Windows для меня не вариант - это часть большого проекта с Makefiles и т. д.).
Во всех случаях я использую roxygen v2.2.2.
Обновление:
Это происходит для любой функции с параметром по умолчанию.
Я свел его к одному воспроизводимому примеру, максимально урезанному, чтобы изолировать проблему:
От R:
# this function used to trim strings, but I've stripped it right down
# to eliminate it as a cause of the problem
trim <- function(x='asdf')
{
return( x )
}
package.skeleton('test')
измените trim.R
(в тесте / R) и добавьте следующий код в верхнюю часть, чтобы файл выглядел следующим образом:
#' trim white spaces from a string
#'
#' @param x string or vector of strings to trim
#' @return x trimmed.
#' @export
trim <-
function(x='asdf')
{
return( x )
}
Запустите R и сгенерируйте документацию:
library(roxygen2)
roxygenise('test')
Посмотрите на полученный trim.Rd
файл (в тесте / man):
\name{trim}
\alias{trim}
\title{trim white spaces from a string}
\usage{
t
}
\arguments{
... # rest of .Rd file - nothing wrong here.
Посмотрите, как там просто \usage{t}
??
Конечно, когда вы запускаете R CMD check
, вы получаете сообщение об отсутствии задокументированных аргументов в \usage
, но это потому, что \usage
обрезано.
Кто-нибудь знает, почему это происходит и как я могу обойти это? Возможно, что-то в roxygen2
, что зависит от того, что работает в Mac, Windows и Linux, но не Cygwin?
ура (я рвал на себе волосы из-за этого).
Обновление № 2:
Я использовал R, установленный из диспетчера пакетов Cygwin, в отличие от моего Windows R (то есть в C:/Program Files/R/R-2.14.2/bin
) - я не знал, что Windows R будет работать под Cygwin.
Если я использую Windows R в Cygwin, ошибка исчезнет. Если я использую Cygwin R в Cygwin, ошибка присутствует.
Я могу только предположить, что это какая-то ошибка, связанная с Cygwin R, в отличие от roxygen2.
Пока что я буду использовать обходной путь использования Windows R в Cygwin (фактически, теперь, когда я знаю, что могу это сделать, Cygwin R все равно не нужен!).