2014-12-30 4 views
1

내가) (첨부 사용 후 음모에 데이터를 식별 할 함수에 연결하여,하지만 난 내 기능을 종료하기 전에 분리 할 수있는 문제가 있습니다확인하고

f = function(x, y, data) { 
    attach(data) 
    plot(x, y) 
    ids = identify(x, y) 
    detach(data) 
    return ids 
} 

반환 값 :

<environment: 0xf785ed8> 
attr(,"name") 
[1] "data" 
> class(i1) 
[1] "environment" 
> str(i1) 
<environment: 0xf785ed8> 
- attr(*, "name")= chr "data" 

함수에서 연결하고 식별하고 첨부 된 객체의 ID를 반환하려면 어떻게해야합니까?

+0

이'문제의 원인,하지만 확실하지 return ids'는'return (ids)'이어야합니다. – nrussell

+0

아니면 그냥'ids' .. –

+1

방금'attach' /'detach'를 피하면 어떻게 될까요? –

답변

2

여기에서 비표준 평가를하려고합니다. 이것은 항상 조금 까다 롭습니다. 내가 좋아하는 뭔가를 추천 할 수 :

f <- function(x, y, data) { 
    dx <- deparse(substitute(x)) 
    dy <- deparse(substitute(y)) 
    plot(reformulate(dx,response=dy),data) 
    ids <- identify(data[,dx], data[,dy]) 
    return(ids) 
} 
f(Population,Income,state.x77) 

또는

f2 <- function(x, y, data) { 
    x <- eval(substitute(x),envir=as.data.frame(data)) 
    y <- eval(substitute(y),envir=as.data.frame(data)) 
    plot(x,y) 
    ids <- identify(x,y) 
    return(ids) 
} 
f2(Population,Income,state.x77) 
당신은 자세한 내용은 Hadley Wickham's notes on non-standard evaluation보고 할 수 있습니다

...

+0

확인. R에는 데이터 프레임과 변수 이름을 lm()과 같은 별도의 매개 변수로 사용하는 많은 라이브러리 함수가 있습니다. 이 함수 호출 구문을 사용하기가 더 쉽고 내 함수에서 같은 규칙을 복제하려고했습니다. –

관련 문제