2014-09-10 3 views
1

내가 제공 한 인수에 따라 데이터 프레임을, 첫 번째 인수로 주어진 데이터 프레임을 기반으로 R 함수를 만드는 부분 집합하려고 :함수 인수를 통해 제공된 열 이름을 기반으로 R 데이터 프레임을 어떻게 서브 세트합니까?

Date  Server1 Server2 Server3 Server4 
1/1/2004  10  20  10  5 
2/1/2014  4  4  4  20 
3/2/2014  1  5  5  39 

I : 예를 들어

, 내 DF는 다음과 같이이다 이 안양의 서브 세트를 필요 :이 함수에 전달하면, 예를 들어

를 (X는 서버 1, Server3을, 서버 4가), 그것은 다음과 같이 표시됩니다

data<-function(x, ...) { 

subset(x, select=c("Server1","Server3", "Server4")) 
} 

하지만 인수 목록을 알 수 없습니다. 열 이름을 모르는 모든 데이터 프레임에 적용해야합니다.

R에서 어떻게 구현할 수 있습니까? 당신이 문자열로 인수를 전달하면

답변

1

는 이렇게 잘 작동 할해야합니다

subset2<-function(x, ...) { 
    cols <- c(...) 
    subset(x, select=cols) 
} 

subset2(dat, "Server1", "Server3", "Server4") 

그러나 나는 그런 래퍼가 필요한 이유를 모르겠어요. 아마도 나는 당신의 진실한 목표가 무엇인지 놓치고 있습니까?

0

어쩌면 subset 주위의 래퍼 기능이 정말로 필요한지 다시 생각해 봐야 할 것입니다. 내가 볼 수있는 한, 의도 한 함수는 subset과 같으며 약간 다른 sintax를 사용하여 동일한 인수가 필요합니다.

어쨌든 열 이름을 모르는 경우 열 색인을 대신 사용할 수 있습니다 (예 : subset(x, select=c(1,3,4)).

0

도움말 페이지에서 대화식으로 만 사용하도록 경고 한 경고문과 마찬가지로 부분 집합을 제거하십시오.

data<-function(x, select, ...) { 
    tmp <- x[select] 
    # do some stuff with it 
    return(tmp) 
} 

간단한 그림 :

data(iris, c("Sepal.Width", "Species")) 
#  Sepal.Width Species 
# 1   3.5  setosa 
# 2   3.0  setosa 
나는 다음은 간단하게 할 수있는, 문제는 여기에 표시되지 않습니다
관련 문제