私は私自身のRパッケージをエクササイズとして作成しようとしています。私はHillary Parkerによってオンラインチュートリアルに従っており、何かを得ることができました。Rでおもちゃパッケージを作って、Rファイルの他の機能を使用できない
私が作ろうとしているパッケージは、csvファイルをとり、データセットのhead()とtail()を出力します。そして、テキストファイルにhead()とtail()の値を出力する別の関数を書きました。
ExercisePkg <- function(.csv) {
csv <- read.csv(.csv)
headValue <- head(csv)
print("The head of the dataset is:")
print(headValue)
tailValue <- tail(csv)
print("The tail of the dataset is:")
print(tailValue)
return(list(headValue, tailValue))
}
私の次の機能は、テキストファイルにheadValue
とtailValue
を印刷することです。そのために私はsink()
を使用すると、次のようにExercisePkg
を変更します。
ExercisePkgTxt <- function(.csv) {
sink('Report.txt')
csv <- read.csv(.csv)
headValue <- head(csv)
print("The head of the dataset is:")
print(headValue)
tailValue <- tail(csv)
print("The tail of the dataset is:")
print(tailValue)
return(list(headValue, tailValue))
sink('Report.txt', append=TRUE)
}
私はcode.Rファイルで、この両方の機能を持っているように:
#' Function to see head and tail of a csv file
#'
#' Function is cool.
#' @param Do you love data? Defaults to TRUE
#' @keywords csv, data, head, tail,text.
#' @export ExercisePkg(),ExercisePkgTxt()
#' @examples no examples
#' ExercisePkg()
#' ExercisePKgTxt()
ExercisePkg <- function(.csv) {
csv <- read.csv(.csv)
headValue <- head(csv)
print("The head of the dataset is:")
print(headValue)
tailValue <- tail(csv)
print("The tail of the dataset is:")
print(tailValue)
return(list(headValue, tailValue))
}
ExercisePkgTxt <- function(.csv) {
sink('Report.txt')
csv <- read.csv(.csv)
headValue <- head(csv)
print("The head of the dataset is:")
print(headValue)
tailValue <- tail(csv)
print("The tail of the dataset is:")
print(tailValue)
return(list(headValue, tailValue))
sink('Report.txt', append=TRUE)
}
それは/path/ToyPackage/R/code.R
の内側に保たれています。
パッケージをインストールした後。私はそれを試してみました。
ExercisePkg("/path/dataset.csv")
は魅力的に機能しました。
しかしExercisePkgTxt("/path/dataset.csv")
私は(ExercisePkgTxt()
ためExercisePkg()
ためcode.Rとcode1.R)別個Rファイルに両方の機能を入れ試みError: could not find function "ExercisePkgTxt"
ようなエラーを与え、パッケージを再構築します。しかし問題は解決しなかった。
私はdocument()
を実行しようとすると、私は、次を得る:
>document()
Updating ToyPackage documentation
Loading ToyPackage
Writing NAMESPACE
Writing ExercisePkg.Rd
>
NAMESPACEファイルは次のようになります。
# Generated by roxygen2: do not edit by hand
export("ExercisePkg(),ExercisePkgTxt()")
そして、私は(インストール "ToyPackage" でパッケージをインストールしようとすると、 )。次のエラーが表示されます。
* installing *source* package 'ToyPackage' ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
*** arch - i386
Error in namespaceExport(ns, exports) :
undefined exports: ExercisePkg(),ExercisePkgTxt()
Error: loading failed
Execution halted
*** arch - x64
Error in namespaceExport(ns, exports) :
undefined exports: ExercisePkg(),ExercisePkgTxt()
Error: loading failed
Execution halted
ERROR: loading failed for 'i386', 'x64'
* removing 'C:/Users/user/Documents/R/win-library/3.3/ToyPackage'
Error: Command failed (1)
私は間違っていますか?
私に全く新しいコードを与えないでください。もしあれば、いくつかの変更を提案してください。
ありがとうございました。
NAMESPACEファイルはどのように見えますか?あなたはそれを構築した後に荷物を積みましたか? 'return'を呼び出した後の関数内のコードは決して実行されないことに気付いていますか? – Roland
pkgの作成は簡単な作業ではなく、最初の試みは非常に立派です!間違いなく、Rolandが示唆したものを突き詰め、Hadleyの[R Packages](http://r-pkgs.had.co.nz)を読んだり(少なくともスキムミルして)、はるかに進んでいく。 pkg開発を合理化するために 'roxygen'と' devtools'を使う方がずっと簡単だと思います。 – hrbrmstr
@hrbrmstr提案していただきありがとうございます。私はその本を注文した。 :) –