오류 : "%> %"함수를 찾을 수 없습니다.


80

R에서 예제를 실행하고 단계를 거치며이 코드를 제외하고 지금까지 모든 것이 작동 중입니다. 오류가 발생합니다.

 words <- dtm %>%
 as.matrix %>%
 colnames %>%
 (function(x) x[nchar(x) < 20])

오류 : "%> %"함수를 찾을 수 없습니다.

이 특수 연산자를 사용할 때의 이점이 무엇인지 이해하지 못하며 %>%어떤 피드백이라도 좋을 것입니다.



응답에 따라 일관성없는 결과가 나옵니다. 10 번 중 8 번 실패했지만 정상적으로 실행됩니다.

답변:


128

먼저 함수를 정의 하는 패키지 ( magrittr또는 dplyr) 를로드 해야 작동합니다.

install.packages("magrittr") # package installations are only needed the first time you use it
install.packages("dplyr")    # alternative installation of the %>%
library(magrittr) # needs to be run every time you start R and want to use %>%
library(dplyr)    # alternatively, this also loads %>%

파이프 연산자 %>%"개발 시간을 줄이고 코드의 가독성과 유지 관리 성을 향상시키기 위해" 소개되었습니다 .

그러나 모든 사람이 자신의 작업 흐름에 정말 적합하고 일을 더 쉽게 만드는지 스스로 결정해야합니다. 에 대한 자세한 내용을 magrittr보려면 여기를 클릭 하십시오 .

pipe를 사용하지 않으면 %>%이 코드는 코드와 동일한 결과를 반환합니다.

words <- colnames(as.matrix(dtm))
words <- words[nchar(words) < 20]
words

편집 : (@Molx가 작성한 매우 유용한 주석으로 인해 내 대답을 확장하고 있습니다)

에서 왔음에도 불구하고 magrittr파이프 연산자는 패키지 dplyr(및로드 필요)와 함께 더 일반적으로 사용 magrittr되므로 누군가를 사용하는 %>%것을 볼 때마다 dplyr 대신 로드 하지 않아야 합니다.


또한 위에 작성된 코드가 %> %를 사용할 필요없이 다른 방식으로 작성 될 수 있다는 의미
입니까?

9
에서 왔음에도 불구하고 magrittr파이프 연산자는 패키지 dplyr(및로드 필요)와 함께 더 일반적으로 사용 magrittr되므로 누군가를 사용하는 %>%것을 볼 때마다 dplyr대신 로드 하지 않아야 합니다.
Molx 2015 년

1
Tidyverse ( library(tidyverse))를 로드하는 것만 으로는 충분하지 않을 수 있다는 점을 강조하고 싶습니다 . 나는 (추가 한 library(dplyr)후) library(tidyverse)다음 %>%발견되었다.
RikH

15

Windows의 경우 : 당신이 %의 dopar %의 루프 내부 %> % 사용하는 경우, 당신은 부하 패키지에 대한 참조를 추가해야합니다 dplyr(또는 magrittr, dplyr로드).

예:

plots <- foreach(myInput=iterators::iter(plotCount), .packages=c("RODBC", "dplyr")) %dopar%
{
    return(getPlot(myInput))
}

.packages명령 을 생략하고 %do%대신 사용 하여 단일 프로세스에서 모두 실행하면 정상적으로 작동합니다. 그 이유는 모든 것이 하나의 프로세스에서 실행되므로 특별히 새 패키지를로드 할 필요가 없기 때문입니다.


1
이것은 좋은 점이며 foreach와 관련하여 특별히 강조 할 가치가 있습니다. 나는 과거에 이것과 관련하여 문제가 있었으며 수용 된 답변으로 해결 된 문제와는 다른 문제입니다.
Michael Barton

이곳이 이것을 강조하기에 적합한 장소인지 확실하지 않지만 foreach 루프를 단순화하는 반복자 패키지를 기반으로 제안하고 편집했습니다. 이것이 부적절하다면 무시 하셔도됩니다.
Michael Barton

1
감사. 나를 구했다. .NET Framework에서 종속성을 선언해야한다는 것을 몰랐습니다 foreach.
Jim G.

0

다음을 사용할 수 있습니다.

 install.packages("data.table")
 library(data.table)

잘못된 대답 imho- "%> %"함수를 정의 하지 않습니다 . 이 두 줄을 추가해도 동일한 결과가 나타납니다.could not find function "%>%"
tchevrier

0

장점은 이전 함수의 출력이 사용된다는 것입니다. 예를 들어 데이터 소스의 출처를 반복 할 필요가 없습니다.


이것을 코멘트로 넣어주세요. 감사.
jess
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.