roxygen2 + cygwin + параметр по умолчанию = усеченный раздел `\ using` - PullRequest
6 голосов
/ 07 марта 2012

У меня есть пакет для 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.


Обновление:

Это происходит для любой функции с параметром по умолчанию.


Я свел его к одному воспроизводимому примеру, максимально урезанному, чтобы изолировать проблему:

  1. От 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')
    
  2. измените 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 )
    }
    
  3. Запустите R и сгенерируйте документацию:

    library(roxygen2)
    roxygenise('test')
    
  4. Посмотрите на полученный 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 все равно не нужен!).

1 Ответ

0 голосов
/ 08 марта 2012

Это не исправление, а обходной путь.

Я использовал 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 все равно не нужен). Это все еще дает мне доступ к командам linux, таким как make, sed и grep, но позволяет мне работать с документацией.

Проблема все еще остается в том, что Cygwin-R в Cygwin (не Windows-R в Cygwin) вызывает эту ошибку, но, возможно, она больше не связана с roxygen2.

...