오류: R에서 함수 ...을(를) 찾을 수 없습니다.
이 질문은 FAQ 질문이므로 가능한 한 답변을 작성해 주시기 바랍니다.정답은 커뮤니티 답변이므로, 누락된 부분이 있다고 생각되면 언제든지 편집하십시오.
나는 R을 사용하고 있고 시도했습니다.some.function
하지만 다음과 같은 오류 메시지가 표시됩니다.
Error: could not find function "some.function"
이 질문은 아주 규칙적으로 나옵니다.R에서 이런 유형의 오류가 발생하면 어떻게 해결할 수 있습니까?
몇 가지 확인해야 할 사항이 있습니다.
- 당신은 당신의 기능의 이름을 정확하게 적었습니까?이름은 대소문자를 구분합니다.
- 당신은 그 기능이 포함된 패키지를 설치했습니까?
install.packages("thePackage")
한 번만 .) - 은 그 를 작업 공간에 했습니까?
require(thePackage)
) (반품값 확인)library(thePackage)
R 세션을 - 당신은 이 기능이 존재하지 않았던 이전 버전의 R을 사용하고 있습니까?
- 특정 패키지의 다른 버전을 사용하고 있습니까?시간이 지남에 따라 기능이 추가되고 제거되며, 참조하는 코드가 설치된 패키지보다 최신 버전 또는 이전 버전의 패키지일 수 있습니다.
해당 기능이 어떤 패키지에 있는지 잘 모르는 경우 몇 가지 작업을 수행할 수 있습니다.
- 패키지를 것이 하다면 올른패로키설치를연고결하다드/한것이입니같력합이다음확과실면다하바지로,▁if다▁type▁the니입합력▁and▁youloaded/를 입력합니다.
help.search("some.function")
또는??some.function
어떤 패키지에 들어 있는지 알 수 있는 정보 상자를 가져옵니다. find
그리고.getAnywhere
함수를 찾는 데도 사용할 수 있습니다.- 패키지에 대한 단서가 없다면, 당신은 사용할 수 있습니다.
findFn
에 시대에sos
이 답변에 설명된 대로 패키지. RSiteSearch("some.function")
또는 r 문서 또는 rsek를 사용하여 검색하는 것이 함수를 찾을 수 있는 대안적인 방법입니다.
때로는 이전 버전의 R을 사용해야 하지만 최신 버전에 대해 만들어진 코드를 실행해야 합니다.그러면 새로 추가된 함수(예: R3.4.0의 hasName)를 찾을 수 없습니다.이전 R 버전을 사용하고 최신 기능을 사용하려는 경우 패키지 백포트를 사용하여 이러한 기능을 사용할 수 있습니다.또한 backports의 git repo에서 backport해야 하는 함수 목록을 찾을 수 있습니다.R3.0.0 이전 버전은 R3.0.0 이상 버전용으로 구축된 패키지와 호환되지 않습니다.
네임스페이스가 있는 경우 패키지 foo에서 내보내지 않은 함수를 실행하려고 하는 것도 문제입니다.
예를 들어, 나는 알고 있지만, 다음과 같습니다.
> mod <- prcomp(USArrests, scale = TRUE)
> plot.prcomp(mod)
Error: could not find function "plot.prcomp"
안 , 첫째, 직3 소메안다음, 되과다가니정합같이만지, ▁firstly▁assume다▁directly▁s니를 가정해 보겠습니다.plot.prcomp
실제로 패키지 foo에서 유용한 내부 기능이었습니다.자신이 무엇을 하고 있는지 알고 있는 경우 이러한 함수를 호출하려면 다음을 사용해야 합니다.:::
또한 함수가 발견되는 네임스페이스도 알아야 합니다.용사를 합니다.getAnywhere()
함수는 패키지 통계에 있습니다.
> 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 메소드를 이렇게 호출하면 안 됩니다.를 들어 ), ▁a▁the▁but▁in예▁you▁if▁for▁function▁function▁(▁is▁exists경▁wantit우▁but▁be,▁said▁utility다▁hidden▁i있▁as▁call▁to음그▁a는러),과▁example(같상▁might),있음수.namespace
R은 사용자가 검색할 네임스페이스를 지정하지 않으면 함수를 찾을 수 없다고 보고합니다.
과 비교해 : 이를다비보십시오해교.stats::plot.prcomp
위의 내용이 실패하는 이유는stats
사용하다plot.prcomp
에서 .stats
그 오류가 우리에게 올바르게 말해주듯이:
오류: 'plot.prcomp'는 'namespace:stats'에서 내보낸 개체가 아닙니다.
이는 다음과 같이 문서화되어 있습니다.
pkg::name은 네임스페이스 pkg에서 내보낸 변수 이름의 값을 반환하는 반면, pkg::name은 내부 변수 이름의 값을 반환합니다.
일반적으로 컴퓨터가 내 제어 하에 있을 때 이 문제를 해결할 수 있지만 그리드로 작업할 때는 더 성가신 문제입니다.그리드가 동질적이지 않으면 모든 라이브러리가 설치되지 않을 수 있으며 종속성이 설치되지 않았기 때문에 패키지가 설치되지 않은 경우가 많습니다.이 문제를 해결하기 위해 다음 사항을 확인합니다.
- Fortran이 설치되어 있습니까?('gfortran'을 찾습니다.)이 문제는 R의 여러 주요 패키지에 영향을 미칩니다.
- Java가 설치되어 있습니까?Java 클래스 경로가 올바릅니까?
- 관리자가 패키지를 설치하고 적절한 사용자가 사용할 수 있는지 확인합니다.때때로 사용자는 잘못된 위치에 패키지를 설치하거나 올바른 라이브러리에 대한 적절한 액세스 없이 실행할 수 있습니다.
.libPaths()
그것은 좋은 수표입니다. - 인확을 합니다.
ldd
R에 대한 결과, 공유 라이브러리 확인 - 필요한 모든 패키지를 로드하고 약간의 테스트만 수행하는 스크립트를 주기적으로 실행하는 것이 좋습니다.이렇게 하면 가능한 한 빨리 워크플로에서 패키지 문제를 파악할 수 있습니다.이것은 기본적인 것이 작동하는지 확인하기 위한 연기 테스트에 가깝다는 점을 제외하고는 빌드 테스트나 유닛 테스트와 비슷합니다.
- 패키지를 네트워크 액세스 가능한 위치에 저장할 수 있다면, 가능합니까?그렇지 않은 경우 시스템 전체에서 일관된 버전을 보장할 수 있는 방법이 있습니까?(이것은 OT로 보일 수 있지만 올바른 패키지 설치에는 올바른 버전의 사용 가능 여부가 포함됩니다.)
- 해당 OS에 패키지를 사용할 수 있습니까?유감스럽게도 모든 패키지를 여러 플랫폼에서 사용할 수 있는 것은 아닙니다.이것은 5단계로 돌아갑니다.가능하면 패키지의 적절한 버전으로 전환하거나 특정 경우 종속성을 해제하여 다른 OS를 처리하는 방법을 찾아보십시오.
이러한 단계 중 일부는 상당히 일상적인 단계가 됩니다.7번은 좋은 출발점처럼 보이지만, 제가 사용하는 빈도의 대략적인 순서대로 나열되어 있습니다.
패키지를 확인하는 동안(RCMD 검사) 이러한 문제가 발생하면 네임스페이스를 살펴봅니다.
네임스페이스에 다음 문을 추가하여 이 문제를 해결할 수 있습니다.
exportPattern("^[^\\\\.]")
점(".")으로 시작하지 않는 모든 항목을 내보냅니다.이렇게 하면 점으로 시작하여 숨겨진 기능을 사용할 수 있습니다.
.myHiddenFunction <- function(x) cat("my hidden function")
제가 실수를 했어요.
오류: 함수를 찾을 수 없습니다.
some.function
RStudio로 만들던 패키지의 RCMD 검사를 할 때 발생합니다.추가하는 것을 찾았습니다.
내보내기 패턴(".")
NAMESPACE 파일에서 이 작업을 수행했습니다.참고로, 저는 처음에 RStudio가 Roxygen을 사용하여 문서를 작성하도록 구성했고, Roxygen이 제 NAMESPACE 파일을 작성할 구성을 선택하여 편집 내용을 계속 지웠습니다.그래서 저는 Roxygen 구성에서 NAMESPACE를 선택 취소하고 이 오류를 해결하기 위해 exportPattern(".")을 NAMESPACE에 추가했습니다.
이 오류는 일부 필수 인수가 누락된 경우(즉, 충분한 인수를 제공하지 않은 경우) 함수 이름이 유효한 경우에도 발생할 수 있습니다.
저는 이것을 Rcpp 컨텍스트에서 얻었는데, 선택적 인수로 C++ 함수를 작성했고, R에 그러한 인수를 제공하지 않았습니다.C++의 선택적 인수는 R에 의해 필수로 간주되는 것으로 나타났습니다.결과적으로, R은 정확한 이름에 대한 일치 함수를 찾을 수 없고 잘못된 인수 수를 찾을 수 없습니다.
함수 : Rcpp 함수:SEXP RcppFunction(arg1, arg2=0) {}
통화R 통화:
RcppFunction(0)
시킵니다.
RcppFunction(0, 0)
않음
Rdocumentation.org 에는 Cran의 모든 패키지뿐만 아니라 Bioconductor와 GitHub의 패키지에서 기능을 찾을 수 있는 매우 편리한 검색 기능이 있습니다.
사중인경우를 .parallelMap
사용자 지정 함수를 슬레이브 작업으로 내보내야 합니다. 그렇지 않으면 "could not find function"(함수를 찾을 수 없습니다.
수준설경에서 누락되지 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)
동일한 오류가 발생했습니다. .99xx 버전을 실행하고 있었습니다. 도움말 메뉴에서 업데이트를 확인하고 My RStudio를 1.0x로 업데이트했습니다. 그러면 오류가 발생하지 않았습니다.
간단한 솔루션입니다. R Studio를 업데이트하기만 하면 됩니다.
언급URL : https://stackoverflow.com/questions/7027288/error-could-not-find-function-in-r
'programing' 카테고리의 다른 글
GIT에서 부분 되돌리기를 수행할 수 있습니까? (0) | 2023.06.28 |
---|---|
SQL Server의 모든 데이터베이스에 있는 모든 테이블의 열 이름을 찾는 방법 (0) | 2023.06.28 |
ggplot2 객체에 대한 플롯 축의 범위를 추출하려면 어떻게 해야 합니까? (0) | 2023.06.28 |
SFTP 업로드 파일 권한이 거부되었습니다. (0) | 2023.06.28 |
관리자 및 phpmyadmin과 관련된 UTF-8 입력 문제 (0) | 2023.06.28 |