ROXYGON: Как установить параметр по умолчанию, включая обратную чехлу ('') для функций

StackOverflow https://stackoverflow.com/questions/4616088

  •  26-09-2019
  •  | 
  •  

Вопрос

Я использую ROxygen для создания RD-файлов моих пакетов в разработке, но у меня есть некоторые проблемы с функциями с параметром по умолчанию, установленным на «\n', например:

  lineCount <- function(text, sep='\n') {
       ...
   }

Какая цель состоит в том, чтобы сосчитать новую строку ('\n') символы в строке. Проблема в том, что R CMD Check дает предупреждение о:

Codoc mismatches from documentation object 'lineCount':
lineCount
  Code: function(text, sep = "\n")
  Docs: function(text, sep = " ")
  Mismatches in argument default values:
    Name: 'sep' Code: "\n" Docs: " "

У меня проблема, которая вызвана записью в файл RD (запись в стандартные файлы латекса через cat() Всегда требуется двойное побег персонажей для определенной цели, например: \\newline - Как я испытал). Если я положу дополнительную обратную косание для сепаратора, как:

  lineCount <- function(text, sep='\\n') {
       ...
   }

Проблема по-прежнему председает, как в коде, похоже, '\\n', но в документах (RD файлы) это выглядит '\n'.

Есть ли простое решение для моей проблемы? Может быть дополнительный тег в ROXYGON, который может определить, как написать параметры функции в файл RD? Извините, если задал слишком очевидный вопрос, но я потерян после Google некоторое время.


История: http://permalink.gmane.org/gmane.comp.lang.r.roxygen/24.


ОБНОВИТЬ: использовать ROXYGEN2.!

Это было полезно?

Решение

Я также столкнулся с проблемами с слишком сильно сбеженным "и исчезновением t. Я закончил изменять parse.formals Функция в RD2.R Roxygen следующим образом:

  parse.formals <- function(partitum) {
    formals <- partitum$formals
    if (!is.null(formals)) {
      formals <- lapply(formals, trim)
      formals <- lapply(formals, paste, collapse=" ")
      name.defaults <- zip.c(names(formals), formals)
      args <-
        do.call(paste, c(Map(function(name.default) {
          name <- car(name.default)
          default <- cadr(name.default)
          if (! is.character (default)) {  # too much escaped. 
                                           # Not sure when escaping is needed. 
                                           # param = c ("x", "y", "z") works now
            default <- gsubfn("\"(.*)\"",
                              function(x)
                              sprintf("\"%s\"", gsub("\"", "\\\\\"", x)),
                              as.character(default))
          }
          default <- gsub ("\t", "\\\\t", default) # the tabs and newlines are already
          default <- gsub ("\n", "\\\\n", default) # tab and newline here.
          if (is.null.string(default))
            name
          else
            sprintf('%s=%s', name, default)
        },
                             name.defaults),
                         sep=', '))

      append.Rd(usageTag(parse.function.name(partitum), args))
    }
  }

Надеюсь, что поможет и ничего не нарушает.

Другие советы

Я также столкнулся с этой проблемой, т.е. я разделил = " +" и разделил = " |" в различных функциях.

Файлы .rд. и вызвал ошибку.

Если файлы .rd были разделены = " +" и разделение = " |" Затем он будет правильно прочитать.

Мое решение было запустить это в каталоге / MAN / MAN / с файлами .rd, незадолго до проверки r cmd:

Perl -e 'S / (« |») / « |» / G; -Pi $ (найти биогеообуженные / человек -тып е)

Perl -e 'S / (« +») / « +» / G;' -Pi $ (найти биогеообуженные / человек -тып е)

Взял немного испытания и ошибки, но это работает!

Ваше здоровье! Ник

У меня такая же проблема. Я закончил переопределение поля использования по умолчанию, как производится Roxygen из исходного кода с @USage. Например, исходный файл R содержит

#' @usage sourceall(dir = getwd(), pattern = ".*\\\\.R", ...)
sourceall <- function( dir=getwd(), pattern=".*\\.R", ... )
{
    blah blah
}

Я испытал подобную проблему с ROXYGON2 V6.0.1.

# this caused errors in R CMD check (non-ASCII chars)
f <- function(x, y, chr = "\u279B")

# this was ok
f <- function(x, y, chr = intToUtf8(0x279B))

В вашем случае, с новым символом, он также должен работать:

lineCount <- function(text, sep = intToUtf8(10))

Ну, поверните меня, коробка комментариев убегает персонажем обратной косой черты! Я отказываюсь добавлять в безумие и добавлять обратные кашию, чтобы избежать черных кассов в коде Perl, который избегает обратных календов в файлах .rd, которые выходят в блэкдуки в R.

Просто удвоивайте все обратные кашилы.

Или теги кода HMM:

perl -e 's/("\\\\\|")/"\\\\\\\\\|"/g;' -pi $(find BioGeoBEARS/man -type f)

perl -e 's/("\\\\\+")/"\\\\\\\\\+"/g;' -pi $(find BioGeoBEARS/man -type f)

Да, это хорошо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top