[R] help with "by" function
Adams, Jean
jvadams at usgs.gov
Tue May 12 21:13:34 CEST 2015
Nilesh,
I found a couple errors in your code. First, in your by() statement you
have a function to operate on the selected subset of data, which you refer
to as
x
but then, in your aov statement you refer to
data_set
not
x
Second, your funC() statement is a function of
trait_names
but to make sure that the name of the variable is included in the formula,
I changed this to a character variable.
Give the code below a try and see if it works for you.
Jean
library(agricolae)
library(dplyr)
funC <- function(trait_names){
by(data_set, data_set$Isopair, function(x) {
mod <- aov(formula(paste(trait_names, "~ STGgroup*Field +
Rep%in%Field")),
data=x)
out <- HSD.test(mod, "STGgroup", group=TRUE, console=TRUE)
dfout <- arrange(data.frame(out$groups), desc(trt))
})
}
funC("Trait1")
On Tue, May 12, 2015 at 1:03 PM, DIGHE, NILESH [AG/2362] <
nilesh.dighe at monsanto.com> wrote:
> Hi,
> I have an anonymous function called function(x) that will run anova, run
> HSD.test on the model, and then sort the results. I am passing this
> anonymous function to the "by" function to get results by "Isopair" factor
> which is my index variable. Since I want to run the anova on multiple
> dependent variables including "Trait1" & "Trait2", I am calling the
> dependent variable, "trait_names" in the model and then passing the "by"
> function to another function called "funC" which takes the "trait_names" as
> an argument to execute.
>
> After I execute the funC(data_set$trait1), I am getting the results by
> Isopair but the results for the two Isopairs (Isopair-A &Isopair-B) are the
> same which I know is not correct. It looks like the data is not getting
> split by Isopairs and so ALL data is used in anova for both Isopairs. Any
> help in modifying function, funC or any other ways to achieve the desired
> outcome will be highly appreciated.
>
> Thanks. Nilesh
>
> R code, data set, and session info is pasted below.
> R code:
> library(agricolae)
> funC<- function(trait_names){
> by(data_set, data_set$Isopair,function(x){
> mod<- aov(trait_names~ STGgroup*Field + Rep%in%Field, data=data_set)
> out<-HSD.test(mod,"STGgroup",group=TRUE,console=TRUE)
> dfout<- arrange(data.frame(out$groups),desc(trt))
> })
> }
> Results:
> ##execute funC function for Trait1 & Trait2
> funC(data_set$Trait1)
>
>
> data_set$Isopair: Isopair-A
>
> trt means M
>
> 1 STG 776.9167 a
>
> 2 Non-STG 779.0833 a
>
> ---------------------------------------------------------------------------
>
> data_set$Isopair: Isopair-B
>
> trt means M
>
> 1 STG 776.9167 a
>
> 2 Non-STG 779.0833 a
>
> Data:
> data_set<- structure(list(Field = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
> 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
> 2L), .Label = c("LML6", "TZL2"), class = "factor"), Isopair =
> structure(c(1L,
> 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L,
> 1L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Isopair-A", "Isopair-B"
> ), class = "factor"), STGgroup = structure(c(1L, 1L, 1L, 2L,
> 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L,
> 1L, 2L, 2L, 2L), .Label = c("Non-STG", "STG"), class = "factor"),
> Rep = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
> 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label =
> c("Rep1",
> "Rep2", "Rep3"), class = "factor"), Trait1 = c(686L, 641L,
> 642L, 727L, 619L, 562L, 808L, 739L, 744L, 873L, 797L, 868L,
> 782L, 783L, 675L, 713L, 762L, 641L, 1009L, 995L, 845L, 1186L,
> 912L, 663L), Trait2 = c(45L, 65L, 70L, 35L, 20L, 80L, 70L,
> 65L, 70L, 20L, 30L, 35L, 40L, 55L, 35L, 40L, 35L, 40L, 40L,
> 35L, 25L, 40L, 35L, 25L)), .Names = c("Field", "Isopair",
> "STGgroup", "Rep", "Trait1", "Trait2"), class = "data.frame", row.names =
> c(NA,
> -24L))
>
> Session info:
>
> R version 3.1.3 (2015-03-09)
>
> Platform: i386-w64-mingw32/i386 (32-bit)
>
> Running under: Windows 7 x64 (build 7601) Service Pack 1
>
>
>
> locale:
>
> [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United
> States.1252
>
> [3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
>
> [5] LC_TIME=English_United States.1252
>
>
>
> attached base packages:
>
> [1] grid stats graphics grDevices utils datasets methods
> base
>
>
>
> other attached packages:
>
> [1] gridExtra_0.9.1 Hmisc_3.16-0 Formula_1.2-1 survival_2.38-1
> caret_6.0-41 ggplot2_1.0.1
>
> [7] lattice_0.20-30 MASS_7.3-39 dplyr_0.4.1 agricolae_1.2-1
>
>
>
> loaded via a namespace (and not attached):
>
> [1] acepack_1.3-3.3 assertthat_0.1 boot_1.3-15
> BradleyTerry2_1.0-6
>
> [5] brglm_0.5-9 car_2.0-25 cluster_2.0.1
> coda_0.17-1
>
> [9] codetools_0.2-10 colorspace_1.2-6 combinat_0.0-8 DBI_0.3.1
>
> [13] deldir_0.1-9 digest_0.6.8 foreach_1.4.2
> foreign_0.8-63
>
> [17] gtable_0.1.2 gtools_3.4.1 iterators_1.0.7
> klaR_0.6-12
>
> [21] latticeExtra_0.6-26 lazyeval_0.1.10 LearnBayes_2.15 lme4_1.1-7
>
> [25] magrittr_1.5 Matrix_1.1-5 mgcv_1.8-4
> minqa_1.2.4
>
> [29] munsell_0.4.2 nlme_3.1-120 nloptr_1.0.4 nnet_7.3-9
>
> [33] parallel_3.1.3 pbkrtest_0.4-2 plyr_1.8.1
> proto_0.3-10
>
> [37] quantreg_5.11 RColorBrewer_1.1-2 Rcpp_0.11.6
> reshape2_1.4.1
>
> [41] rpart_4.1-9 scales_0.2.4 sp_1.0-17
> SparseM_1.6
>
> [45] spdep_0.5-88 splines_3.1.3 stringr_0.6.2
> tools_3.1.3
>
>
>
>
>
> This e-mail message may contain privileged and/or confidential
> information, and is intended to be received only by persons entitled
> to receive such information. If you have received this e-mail in error,
> please notify the sender immediately. Please delete it and
> all attachments from any servers, hard drives or any other media. Other
> use of this e-mail by you is strictly prohibited.
>
> All e-mails and attachments sent and received are subject to monitoring,
> reading and archival by Monsanto, including its
> subsidiaries. The recipient of this e-mail is solely responsible for
> checking for the presence of "Viruses" or other "Malware".
> Monsanto, along with its subsidiaries, accepts no liability for any damage
> caused by any such code transmitted by or accompanying
> this e-mail or any attachment.
>
>
> The information contained in this email may be subject to the export
> control laws and regulations of the United States, potentially
> including but not limited to the Export Administration Regulations (EAR)
> and sanctions regulations issued by the U.S. Department of
> Treasury, Office of Foreign Asset Controls (OFAC). As a recipient of this
> information you are obligated to comply with all
> applicable U.S. export laws and regulations.
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
[[alternative HTML version deleted]]
More information about the R-help
mailing list