2016-06-26 1 views
0

많은 다른 데이터 세트를 가진 R의 데이터를 분석 중이며 더미 변수를 함수에 보내서 주 데이터 집합을 부분 집합하고 하위 집합의 변수의 평균을 출력하려고합니다.동적 변수를 갖는 함수

는 예를 들어, 내 데이터 세트는 "두"라는 나의 더미 변수는 "over50"이고 내 기능입니다 :

getMean <- function(varName) { 
    sub1 <- two[two$varName == 1, ] 
    sub2 <- two[two$varName == 0, ] 
    print(mean(sub1$return) 
    print(mean(sub2$return) 
} 

을 그러나, 나는 getMean(over50)를 호출 할 때 예상 대답을하지 않습니다.

동적으로 할 수 있도록 함수 입력을 var 이름으로 변환하는 방법이 있습니까? 또는이 계산을 수동으로 수행해야합니까?

답변

1

원하는 구문이 two[two[, varName] == 0, ]이라고 생각합니다.

보다 일반적으로 문자열을 data[c("row1", "row2"), c("col1", "col2")]으로 전달하여 데이터 프레임의 열/행에 액세스 할 수 있습니다.

사이드 노트 : print() 문에 몇 개의 닫는 괄호가 누락 된 것 같습니다.

0

이 경우 문자열을 함수에 전달하는 것이 더 쉽습니다. 다음은 data.frame과 변수 이름 (문자열)을 취하는 일반화 된 함수입니다.

getMean <- function(df, varName) { 
    mean1 <- mean(df[df[[varName]] == 1, ]$return) 
    mean2 <- mean(df[df[[varName]] == 1, ]$return) 

    return(c("mean1"=mean1, "mean2"=mean2)) 
} 

이렇게하면 두 가지 방법으로 명명 된 벡터가 반환됩니다. df 인수는 data.frame 이름 (따옴표 제외)이어야하며 반면 varname은 문자열이어야합니다.

관련 문제