2011-03-25 7 views
-2

다시 시도하겠습니다. 정확한 데이터/예제를 생략하고 수행해야 할 작업을 수행 할 것입니다.부모로부터 변수에 액세스해야합니다. 자식 범위 내에서 적용해야합니다. 전역 적 범위 지정없이 적용합니다.

data.frame의 행에 함수를 적용해야합니다. 그런 다음 전달 된 data.frame을 사용하여 해당 함수 내에서 변수를 파생시킬 필요가 있습니다. 마지막으로 data.frame의 하위 집합에 새 함수를 적용하고 새 함수에서 파생 변수를 사용하고 싶습니다.

내 변수 (var1, var2)를 전역 적으로 범위 지정하는 대신 누군가가이 작업을 수행하는 가장 좋은 방법을 알려주시겠습니까?

cpt <- a.data.frame 

query.db <- function(another.data.frame){ 
     var1 <- some.values 
     var2 <- some.other.values 
     apply(cpt[var1,], 1, calc.enrichment) #calc.enrichment needs to access var1, var2! 
} 

나는 인정 받고되지 않은 사용자 정의 함수보다는 범위 밖에 있지만 인수 내 목록 (VAR1, VAR2)로 calc.enrichment 기능을 작성했습니다. 어떤 도움을 주셔서 감사합니다.

+0

귀하의 인위적 인본은 따라하기가 매우 어렵습니다. 'var1'과'var2'는 어디에서 왔습니까? 그것들은'another.data.frame'에서 변수의 계산입니까? 이 기능에서 무엇을 반환하려고합니까? 어떤 유형의 계산을하고 있습니까? 숫자 데이터? 범주 형 데이터? 이 질문은 현재의 형태로는 거의 답할 수 없습니다. – Chase

+0

-1 재생할 수 없음 –

+0

모든 개체를 전달하여 다운 스트림 기능에 명시 적으로 사용하는 것이 좋습니다. –

답변

1

이 어리석은 예제는 저에게 효과적이며 이후의 문제를 해결하는 것으로 보입니다. 우리는 var1을 사용하여 여러분이했던 것처럼 apply 함수에서 사용 된 data.frame의 칼럼에 색인을 붙인다. var2은 전달 된 data.frame의 첫 번째 열의 표준 편차에 불과합니다. 나는 당신의 진짜 모범이 뭔가 좀 더 유용하다고 생각합니다.

cpt <- data.frame(a = rnorm(5), b = rnorm(5), c = rnorm(5)) 
another.data.frame <- data.frame(d = rnorm(5), e = rnorm(5), f = rnorm(5)) 

query.db <- function(dat, outer.dat) { 
    var1 <- sample(1:nrow(dat), sample(1:nrow(dat), 1, FALSE), FALSE) 
    var2 <- sd(dat[, 1]) 

    apply(outer.dat[var1 ,], 1, function(x) apples = x * sin(var2)/cos(var2)^2) 

} 


query.db(another.data.frame, cpt)