これはFAQの質問であるため、できるだけ完全なものにしてください。答えはコミュニティの答えです。何か不足していると思われる場合は自由に編集してください。
Rを使用して試してみましsome.function
たが、次のエラーメッセージが表示されました。
Error: could not find function "some.function"
この質問は非常に定期的に出てきます。Rでこのタイプのエラーが発生した場合、どのように解決できますか?
これはFAQの質問であるため、できるだけ完全なものにしてください。答えはコミュニティの答えです。何か不足していると思われる場合は自由に編集してください。
Rを使用して試してみましsome.function
たが、次のエラーメッセージが表示されました。
Error: could not find function "some.function"
この質問は非常に定期的に出てきます。Rでこのタイプのエラーが発生した場合、どのように解決できますか?
回答:
確認する必要があることがいくつかあります。
install.packages("thePackage")
(これは一度だけ行う必要があります)require(thePackage)
またはlibrary(thePackage)
(これは、新しいRセッションを開始するたびに実行する必要があります)その関数がどのパッケージにあるかわからない場合は、いくつかのことができます。
help.search("some.function")
または??some.function
を入力して、パッケージが含まれているパッケージを示す情報ボックスを取得します。find
また、getAnywhere
関数の検索にも使用できます。findFn
にsos
で説明したようにパッケージこの回答。RSiteSearch("some.function")
またはrdocumentationで検索またはrseekを使用した検索は、関数を見つける別の方法です。古いバージョンのRを使用する必要がある場合がありますが、新しいバージョン用に作成されたコードを実行します。新しく追加された関数(R 3.4.0のhasNameなど)は、その時点では見つかりません。古いRバージョンを使用していて、新しい関数を使用したい場合は、パッケージバックポートを使用して、そのような関数を使用可能にすることができます。また、バックポートのgitリポジトリにバックポートする必要がある関数のリストもあります。R3.0.0より古いRバージョンは、R3.0.0以降のバージョン用にビルドされたパッケージと互換性がないことに注意してください。
hasName
関数をで使用しようとしていましたutils
。ただし、私は3.3.1を使用しており、hasName
3.4.0まで導入されませんでした。utils
スタンドアロンライブラリとして更新することはできないため、R / R Studioによると、更新するライブラリはありませんでした。
https://www.rdocumentation.org/packages/utils/versions/3.4.3/topics/hasName
もhttps://stat.ethz.ch/R-manual/R-devel/library/utils/html/hasName.html
「R 3.4.0で導入された」と言っていない私は、githubのレポと見て参照して、それを考え出すことになったblame
utilsの/ R / hasName.Rとベース/ R / match.Rため
RSiteSearch("hasName")
て同じ情報を得たかもしれません。それが、私がその答えに数年前に追加した理由です。知っておくと便利です;-)
NAMESPACEが存在する場合の別の問題は、パッケージfooからエクスポートされていない関数を実行しようとしていることです。
たとえば、(不自然な、私は知っていますが):
> mod <- prcomp(USArrests, scale = TRUE)
> plot.prcomp(mod)
Error: could not find function "plot.prcomp"
まず、S3メソッドを直接呼び出すことはできませんが、plot.prcomp
実際にはパッケージfooの便利な内部関数であると想定してください。実行していることがわかっている場合にそのような関数を呼び出すには、を使用する必要があります:::
。また、関数が含まれている名前空間も知っておく必要があります。を使用しgetAnywhere()
て、関数がパッケージstatsにあることがわかります。
> getAnywhere(plot.prcomp)
A single object matching ‘plot.prcomp’ was found
It was found in the following places
registered S3 method for plot from namespace stats
namespace:stats
with value
function (x, main = deparse(substitute(x)), ...)
screeplot.default(x, main = main, ...)
<environment: namespace:stats>
したがって、次のように直接呼び出すことができます。
> stats:::plot.prcomp(mod)
plot.prcomp
目的を説明するために、例として使用しました。通常の使用では、このようなS3メソッドを呼び出すことはできません。しかし、言ったように、呼び出したい関数が存在する場合(たとえば、非表示のユーティリティ関数である可能性があります)がにあるnamespace
場合、Rは、どの名前空間を検索するかを指定しない限り、関数を見つけられないと報告します。 。
以下に、この比較:
stats::plot.prcomp
ながらため、上記の失敗stats
の用途plot.prcomp
、それはからエクスポートされていないstats
エラーが正しく教えてくれるよう:
エラー:「plot.prcomp」は「namespace:stats」からエクスポートされたオブジェクトではありません
これは次のように文書化されています。
pkg :: nameはエクスポートされた変数名の値を名前空間pkgに返しますが、pkg ::: nameは内部変数名の値を返します。
could not find function "anova.lm"
... stats:::anova.lm()
代わりに電話で修正しました
:::
設計ミスと呼ばれており、それ::
が推奨されます。簡単に参照を見つけることができません。
::
と:::
されている異なると、あなたの編集はしない仕事します!plot.prcomp()
関数がされていない、あなたが使用する必要があるので、統計名前空間からエクスポート:::
。
コンピュータが自分の制御下にあるときに、通常、この問題を解決できますが、グリッドを操作する場合は、さらに厄介です。グリッドが均質でない場合、すべてのライブラリーがインストールされない可能性があり、依存関係がインストールされなかったためにパッケージがインストールされなかったことがよくあります。これに対処するために、以下を確認します。
.libPaths()
良いチェックです。ldd
Rの結果を、共有ライブラリについて確認しますこれにかなり遭遇したので、これらのステップのいくつかはかなり日常的になります。#7は良い出発点のように思えるかもしれませんが、これらは私がそれらを使用する頻度のおおよその順序でリストされています。
パッケージのチェック(R CMDチェック)中にこれが発生した場合は、NAMESPACEを確認してください。
これを解決するには、NAMESPACEに次のステートメントを追加します。
exportPattern("^[^\\\\.]")
これは、ドット( "。")で始まらないものすべてをエクスポートします。これにより、ドットで始まる隠し機能を持つことができます。
.myHiddenFunction <- function(x) cat("my hidden function")
エラーがありました
エラー:関数が見つかりませんでした
some.function
RStudioで作成していたパッケージのR CMDチェックを実行すると発生します。追加した
exportPattern( "。")
NAMESPACEファイルへのトリックでした。補足として、ROStudioを使用してドキュメントを作成するようにRStudioを最初に構成し、ROxygenがNAMESPACEファイルを書き込む構成を選択しました。これにより、編集内容が消去され続けました。そのため、私のインスタンスでは、Roxygen構成からNAMESPACEのチェックを外し、このエラーを解決するためにNAMESPACEにexportPattern( "。")を追加しました。
このエラーは、必須の引数が欠落している(つまり、引数が不足している)場合に関数の名前が有効であっても発生する可能性があります。
これは、オプションの引数を使用してC ++関数を記述し、Rでそれらの引数を提供しなかったRcppコンテキストで取得しました。C++からのオプションの引数は、Rによって必須であると見なされたようです。その結果、Rは見つかりませんでした正しい名前に一致する関数ですが、引数の数が正しくありません。
Rcpp関数: SEXP RcppFunction(arg1, arg2=0) {}
R呼び出し:
RcppFunction(0)
エラーを発生さ
RcppFunction(0, 0)
せません
Rdocumentation.orgには、CRANのすべてのパッケージや、BioductorやGitHubのパッケージから機能を見つけることができる非常に便利な検索機能があります。
使用している場合 parallelMap
場合は、カスタム関数をスレーブジョブにエクスポートする必要があります。そうでない場合は、「関数が見つかりませんでした」というエラーが発生します。
parallelStart
同じ引数に欠落していないレベルを設定するとparallelExport
、に渡されます。それ以外の場合は、同じエラーが発生します。したがって、これは厳密に従う必要があります。
parallelStart(mode = "<your mode here>", N, level = "<task.level>")
parallelExport("<myfun>", level = "<task.level>")
名前間隔によってこのエラーを修正できる場合があります::関数呼び出し
comparison.cloud(colors = c("red", "green"), max.words = 100)
に
wordcloud::comparison.cloud(colors = c("red", "green"), max.words = 100)
同じエラーが発生しました。バージョン.99xxxを実行していました。ヘルプメニューから更新を確認し、My RStudioを1.0xに更新したところ、エラーは発生しませんでした
とてもシンプルなソリューション、R Studioを更新するだけ