2010-06-30 3 views
2

자주 반복되는 분석을 수행하는 함수를 작성하려고합니다.이 중 일부는 그룹의 수와 각 그룹 내의 구성원 수를 계산하므로 구조에 도움이됩니다. 그러나 내 코드에는 문제 .... 여기ddply 함수에서 실행하면 함수 외부의 환경에서 보입니까?

는 여기에 몇 가지 예를 들어 데이터

> dput(BGBottles) 
structure(list(Machine = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 
3L, 3L, 3L, 4L, 4L, 4L), .Label = c("1", "2", "3", "4"), class = "factor"), 
    weight = c(14.23, 14.96, 14.85, 16.46, 16.74, 15.94, 14.98, 
    14.88, 14.87, 15.94, 16.07, 14.91)), .Names = c("Machine", 
"weight"), row.names = c(NA, -12L), class = "data.frame") 

이고 것은 내가이 기능을 실행하면, 나는 오류가 내 코드

foo<-function(exp1, exp2, data) { 
datadesc<-ddply(data, .(with(data, get(exp2))), nrow) 
return(datadesc) 
} 

입니다

내 EXP1, EXP2을 정의하고 데이터 변수 그는 최초의 글로벌 environemtn를 int로하면
> foo(exp="Machine",exp1="weight",data=BGBottles) 
Error in eval(substitute(expr), data, enclos = parent.frame()) : 
    invalid 'envir' argument 

그러나, 그것은

> exp1<-"weight" 
> exp2<-"Machine" 
> data<-BGBottles 
> foo(exp="Machine",exp1="weight",data=BGBottles) 
    with.data..get.exp2.. V1 
1      1 3 
2      2 3 
3      3 3 
4      4 3 

그래서, 내가 함수의 environemtn의 ddply 실행 외부에서 가정 일? 이것을 막을 수있는 방법이 있습니까, 아니면 제가 잘못하고있는 것입니까?

감사합니다.

폴.

답변

2

이이 버그의 예입니다. 그러나 마렉이 지적했듯이 어쨌든 여기에 올 필요는 없습니다.

관련 문제