2

初期化時にRに特定のファイルをロードさせたいので、当然source、Rprofileにコマンドを追加しました。

  .First <- function()
   {
         cat("\n   Welcome to R MotherFnorder!!!\n\n")
         setwd("/home/username/Code/R/")
       source("/home/username/Code/R/file.R")
   }

しかし、起動すると、またはRのようなデフォルト関数に対して「関数が見つかりません」というエラーがスローされます。同じファイルを手動でワークスペースにロードすると、エラーは発生しません。runifrnorm

4

2 に答える 2

1

エラーの理由は.First()、パッケージがまだロードされていない場合です。

runifrnormはデフォルトの関数のように見えるかもしれませんが、実際にはパッケージの一部ですstats。そのため、 が呼び出されたときにそれらは使用できません.First()(特に 内からそのパッケージを呼び出さない限り.First) 。

...これも説明しています:

同じファイルを手動でワークスペースにロードすると、エラーは発生しません。

何かを手動で実行する.First()に、デフォルトのパッケージがアタッチされます。したがって、手動で呼び出すときに関数で使用できます。


解決策は、(まだ存在しない場合) と呼ばれるファイルを作成し、 "~/.Rprofile"現在の行をそこに配置することです.First()

于 2014-08-27T01:29:30.473 に答える
1

を作成する必要はありません (または、実際には必要ありません).First。これらの行を に入れると、.Rprofile問題なく実行されます。-- @Pascal が指摘した条件付きで、呼び出された関数はfile.R最初にそのライブラリをロードする必要があります。だから、あなたの一番下の近くに.Rprofile置くだけです

library(whatever_packages_needed)
cat("\n   Welcome to R MotherFnorder!!!\n\n")
setwd("/home/username/Code/R/")
source("/home/username/Code/R/file.R")

編集:あなたの問題を再現できません。.Rprofile の末尾に次の行を追加しました。

#testing SO problem with libloading
library(stats)
runif(10)

そして、コンソールは 10 個のナイス ナンバーを返します。

于 2014-06-17T11:54:40.860 に答える