6

Linuxで開発してきたRのパッケージがあり、Windowsでテストするのは恐ろしい時期です。

ドキュメントはroxygenを使用して作成されており、私はcygwinを使用してパッケージをビルドしています。

問題は、私がroxygenise('test-package')、roxygen\usageがドキュメントのセクションを1文字に切り捨てることです。これは私の機能のすべてではありませんが一部に対して行われ、パターンを理解できません。

これは、LinuxまたはWindowsで同じコマンド(つまり、Rプロンプトから)を実行した場合には発生しませんroxygenise('test-package')-WindowsではCygwinだけです(R devtools + Windowsからのコマンドプロンプトを使用することは私にとってオプションではありません-これは、Makefilesを使用した大きなプロジェクトの一部です等)。

すべての場合において、私はroxygenv2.2.2を使用しています。


アップデート:

これは、デフォルトのパラメータを持つすべての関数で発生するようです。


私はそれを1つの再現可能な例に要約し、問題を切り分けるために可能な限り切り詰めました。

  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. (test / Rで)変更trim.Rし、次のroxygenを上部に追加して、ファイルが次のようになるようにします。

    #' 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ファイルを(test / 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:

私は、Windows R(つまりの1つC:/Program Files/R/R-2.14.2/bin)ではなく、CygwinのパッケージマネージャーからインストールされたRを使用しています-WindowsRがCygwinで動作することに気づいていませんでした。

CygwinでWindowsRを使用すると、バグはなくなります。CygwinでCygwinRを使用すると、バグが発生します。

これは、roxygen2とは対照的に、CygwinRに関連するいくつかのバグであると推測できます。

今のところ、cygwin内でWindows Rを使用する回避策を使用します(実際、これができることがわかったので、とにかくCygwin Rは必要ありません!)。

4

1 に答える 1

0

これは修正ではありませんが、回避策です。

Windows R(つまり、C:/ Program Files / R / R-2.14.2 / binにあるもの)ではなく、CygwinのパッケージマネージャーからインストールされたRを使用しています-WindowsRがCygwin。

CygwinでWindowsRを使用すると、バグはなくなります。CygwinでCygwinRを使用すると、バグが発生します。

これは、roxygen2とは対照的に、CygwinRに関連するいくつかのバグであると推測できます。

今のところ、cygwin内でWindows Rを使用する回避策を使用します(実際、これができることがわかったので、とにかくCygwin Rは必要ありません)。これにより、、、などmakeのLinuxコマンドにアクセスできますが、ドキュメントを機能させることができます。sedgrep

CygwinのCygwin-R(CygwinのWindows-Rではない)がこのバグを引き起こすという問題はまだ残っていますが、おそらくそれはもはやroxygen2とは関係がありません。

于 2012-03-08T06:40:05.597 に答える