имена переменных ограничены 256 байтами

#r #roxygen

#r #roxygen

Вопрос:

roxygenize завершается ошибкой в следующем коде со следующим сообщением об ошибке. В других сообщениях по этой теме указывается, что там неуместный символ. Я не могу найти ничего неправильного! Можете ли вы определить проблему?

 #' My Title. My Description
#'
#' @return A n x n code{link{matrix}} where n = the number of variables.  Row and column names are in the same order and are equivalent to the variable names in samp{timeSeriesData}.  Each entry [i,j] in the matrix is the covariance between variable i and variable j.
#' @callGraphPrimitives
#' @note some notes here
MyFunc = function( timeseriesData ,  method , decayFactor  )
{
}


Error in do.call(paste, c(trimmed.lines, sep = "n")) :
  variable names are limited to 256 bytes
Calls: roxygenize ... parse.ref.list -> append -> parse.ref -> parse.ref.preref
-> do.call
Execution halted
  

Правка1
Приведенный выше код работает просто отлично, если я уберу несколько слов из длинной строки @return

Правка2
Добавление sessionInfo() приводит к результатам перед вызовом roxygenize.

 R version 2.12.2 (2011-02-25)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  utils     datasets  grDevices methods   base

other attached packages:
[1] roxygen_0.1-2 digest_0.4.2
  

Комментарии:

1. На моем компьютере это выполняется без каких-либо ошибок. Каков результат sesionInfo() ?

2. Я опубликовал sessionInfo перед вызовом roxygenize. Я не могу заставить его работать после вызова roxygenize, потому что выполнение останавливается. Обратите внимание, что исходный код работает нормально, если убрать несколько слов из конца строки @return.

3. Вот предположение: @return Параметр ограничен 256 символами. Возможно, я сталкивался с такой же проблемой в прошлом, потому что, как правило, my @return содержит что-то минимальное, подобное @return data.frame . Вместо этого я склонен использовать описание roxygen для расширения механики и выходных данных. К вашему сведению, вам не хватает @param вызовов — если вы собираетесь использовать эту функцию в пакете, проверка R CMD будет отменена, если ваши параметры @param и функции не совпадают.

4. @Andrie — да, я убрал @param просто для сокращения кода. Я думаю, вы правы насчет @return…it было бы здорово получить окончательный ответ, что это на самом деле ограничение.

5. @Andrie — ах … только что увидел ответ @Henry’s

Ответ №1:

Это известная ошибка: смотрите это обсуждение с участием Хэдли Уикхем, участника roxygen.

Обходной путь заключается в том, чтобы строки были короче: в вашей #' @return A n x n ... строке около 270 символов (включая три предложения), поэтому ее можно легко разделить.

Комментарии:

1. также 1. когда вы говорите «разделить», вы имеете в виду, что я могу сохранить содержимое и просто разделить его на несколько строк?

Ответ №2:

Другим возможным решением является обновление до R2.13.0, теперь максимальная длина вашего символа равна 10000 вместо 256