함수 내에서 dplyr을 사용하려고합니다. 열 이름을 변수로 전달하여 summarize 함수에서 n_distinct와 함께 사용합니다.dplyr n_distinct를 따옴표 붙은 변수와 함께 사용하기
비 네트 (nse)에 설명 된대로 summarize_, arrange_ etc 함수를 사용하면 dplyr을 사용한 프로그래밍이 더욱 쉬워졌습니다. 나는 lazyeval 에서뿐만 아니라 interp의 다양한 조합을 시도했습니다. "n_distinct()에 대한 입력은 데이터 세트의 단일 변수 이름이어야합니다"(이는 의미가 있습니다. 문자열에 변수 이름이 있다는 것입니다 ...)
이것은 함수 외부에서 올바르게 작동합니다 (언급 열 이름이 data.frame에) :
summarize(data, count=n_distinct(mention))
이것은 내 첫 번째 노력이었다
getProportions <- function(datain, id_column) {
overall_total <- summarize(datain, count=n_distinct(id_column))[1,1]
}
getProportions(measures, "mention")
그리고 시도 dplyr과 프로그래밍에 대해 여기에 NSE 문서 및 일부 스레드를 읽은 후
:overall_total <- summarize_(datain, count=interp(~n_distinct(var),var=as.name(id_column)))[1,1]
그러나 아무 소용이 없습니다. 어떤 아이디어? 거의 n_distinct_()가 필요한 것처럼 보입니까?
편집 사과와 감사합니다. 당신 말이 맞아요, 인터프리터 버전이 작동합니다, 나는 결코 그 완전한 조합을 치지 않았을 것 같습니다. 이전 버전을 살펴 봤는데 바로 var 부분을 가지고있을 때는 plain()을 사용했고 summarize_()를 사용했을 때는 var 호출 부분을 생략했습니다. 한숨. 두 버전 모두에서 완전한 예제를 작성하지 않은 것에 대한 제 잘못입니다. 코멘트에 나타난 바와 같이
이 문제는 저에게 잘 맞지 않습니다 :'f <- function (data, col) summarise_ (data, count = interp (~ n_distinct (var), var = as.name (col))) '그리고 나서 'f (mtcars, "cyl")'는 올바른 출력을 반환합니다. 정확히 작동하지 않는 것을 명확히 할 수 있습니까? –
다시 한 번 감사드립니다 (답변을 편집했습니다). 이것은 질문이 아니 었습니다. 삭제해야합니까? – jameshowison
나중에 그것을 유용하게 사용할 수 있기 때문에 삭제하거나 답변을 수락 할 수 있습니다. –