2017-01-13 1 views
0

그룹화하려는 결과가 여러 개 있습니다.열 구분 문자를 R의 벡터로 변환하는 방법은 무엇입니까?

예제 그룹이

> results$netting$codes[[1]] 
[1] "7,4,5,9,39" 

나는 하드 코드 내가 찾고 있어요 결과를 얻을 그룹의 경우.

dplyr::filter(xCategories,xCategories$code %in% c(7,4,5,9,39)) 
    code frequency percentage 
1  4  124 20.462046 
2  4  124 20.462046 
3  4  124 20.462046 
4  4  124 20.462046 
5  5  112 18.481848 
6  5  112 18.481848 
7  5  112 18.481848 
8  5  112 18.481848 
9  7  65 10.726073 
10 7  65 10.726073 
11 7  65 10.726073 
12 7  65 10.726073 
13 9  64 10.561056 
14 9  64 10.561056 
15 9  64 10.561056 
16 9  64 10.561056 
17 39   8 1.320132 

그룹을 참조하면 결과가 없습니다.

> dplyr::filter(xCategories,xCategories$code %in% c(results$netting$codes[[1]])) 
[1] code  frequency percentage 
<0 rows> (or 0-length row.names) 

또는

> dplyr::filter(xCategories,xCategories$code %in% c(as.vector(results$netting$codes[[1]]))) 
[1] code  frequency percentage 
<0 rows> (or 0-length row.names) 

당신은 어떻게 R의 벡터에 문자를 구분 열을 변환 할 것인가?

+1

당신은 일반적으로, dplyr 기능에서'$를'싶지 않아요. – alistaire

+0

무슨 뜻인지 잘 모르겠습니다. –

+1

dplyr는 (some_df $'접두어없이) 맨손으로 열 이름을 허용하는 비표준 평가를 사용합니다. 접두어를 사용하면 함수에 전달 된 데이터를 참조하지 않고 외부에서 벡터를 가져옵니다. 접두사는 간단한 전화에 대해서는 문제가 없으며 때로는 매우 복잡한 전화를 만드는 데 도움이 될 수 있지만 대다수의 경우 두통을 유발할 수 있습니다. – alistaire

답변

1

오른쪽에 scan()을 사용할 수 있습니다. 구분 된 문자열을 읽고 결과를 자동으로 숫자로 변환 할 수 있습니다.

scan(text = results$netting$codes[[1]], sep = ",") 

예 : 그것은 인라인 인스턴스를 대신 전체 변수를 참조로

scan(text = "7,4,5,9,39", sep = ",") 
# Read 5 items 
# [1] 7 4 5 9 39 

1:10 %in% scan(text = "7,4,5,9,39", sep = ",") 
# Read 5 items 
# [1] FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE 
+0

dplyr :: filter (xCategories, xCategories는 % c에서 $ code %를 검색합니다 (text = results $ netting $ codes [[1], sep = ",")))는 내가 원하는 결과를 제공합니다. 감사. –

+1

@KeithJohnHutchison - alistaire가 언급했듯이, 당신은'$'을 필요로하지 않습니다. 'c()'도 필요 없다. 그래서 당신의 코드는'dplyr :: filter (xCategories, % scan (text = results $ netting $ codes [[1], sep = ",") –

관련 문제