2017-09-23 1 views
1

저는 여기에서 매우 빠졌습니다. 나는 많은 예제를 보았지만 다음과 같은 문제점을 파악할 수 없었다.함수에 data.frame의 다른 이름을 전달합니다.

df1 <- data.frame(
    Rep = factor(rep(1:3, each = 4, times = 2)), 
    Gen = rep(paste0("T", 1:4), times = 6), 
    Env = rep(paste0("Loc", 1:2), each = 12), 
    Y = rnorm(24) 
) 

GEMeans <- 
    function(data, G, E, Y){ 
    G <- deparse(substitute(G)) 
    E <- deparse(substitute(E)) 
    Y <- deparse(substitute(Y)) 

    Means <- 
    reshape2::acast(
     data   = data 
     , formula  = data[[G]] ~ data[[E]] 
     , fun.aggregate = mean 
     , margins  = TRUE 
     , value.var  = data[[Y]] 
    ) 
    return(Means) 
    } 


GEMeans(df1, Gen, Env, Y) 

Error in `[.data.frame`(df, vars) : undefined columns selected 

답변

4

acast 전화를 약간 수정하면 문제가 해결됩니다.

GEMeans <- 
    function(data, G, E, Y){ 
    G <- deparse(substitute(G)) 
    E <- deparse(substitute(E)) 
    Y <- deparse(substitute(Y)) 
    Means <- 
    reshape2::acast(
     data   = data 
     , formula  = as.formula(paste(G, E, sep = "~")) # here 
     , fun.aggregate = mean 
     , margins  = TRUE 
     , value.var  = Y # and here 
    ) 
    return(Means) 
    } 

사용해보십시오.

+0

멋진 답변을 주셔서 감사합니다. – MYaseen208

관련 문제