Hello,
I have the following data frame from a complex survey design. Note that it has survey weights, and bootstrap weights. The variables of interest here is iron (IRO). I want to estimate it’s mean by pregnant and non-pregnant status.
| status |
IRO |
WGT_FULL |
BSW1 |
BSW2 |
BSW3 |
| pregnant |
45 |
29316.4 |
0 |
58050.94 |
0 |
| pregnant |
17 |
401.9984918 |
545.8072449 |
561.8532389 |
504.8898659 |
| pregnant |
32 |
2203.624 |
0 |
4915.119 |
5293.266 |
| pregnant |
33 |
779.2059197 |
2304.176342 |
2633.064775 |
0 |
| pregnant |
17 |
8958.373 |
0 |
0 |
10007.5 |
| non-pregnant |
52 |
3307.726 |
0 |
5982.301 |
4324.108 |
| non-pregnant |
16 |
304.3146592 |
567.9649596 |
0 |
329.7168172 |
| non-pregnant |
67 |
425.8173 |
0 |
0 |
1285.752 |
| non-pregnant |
29 |
974.3875169 |
0 |
1191.837293 |
0 |
| non-pregnant |
19 |
2502.044 |
2963.788 |
2939.72 |
2785.933 |
| non-pregnant |
9 |
2210.339 |
2674.871 |
0 |
2891.036 |
| non-pregnant |
19 |
642.0245 |
0 |
765.6621 |
649.7655 |
| non-pregnant |
12 |
1322.31 |
0 |
1497.407 |
1383.725 |
| non-pregnant |
4 |
574.426 |
1455.648 |
1414.688 |
0 |
| non-pregnant |
73 |
126.7128 |
0 |
189.9741 |
181.5099 |
| non-pregnant |
14 |
676.4648 |
0 |
718.8922 |
842.7405 |
| non-pregnant |
18 |
4027.879 |
4874.392 |
0 |
5268.307 |
| non-pregnant |
97 |
2196.652 |
0 |
3226.484 |
3420.65 |
| non-pregnant |
7 |
1993.748 |
0 |
0 |
3269.434 |
| non-pregnant |
20 |
485.4677 |
606.3933 |
2182.711 |
0 |
#Defining the survey design
library("survey")
SurvDesign = svrepdesign(
data = myDat,
weights = ~WGT_FULL,
repweights = "BSW[1-9]+",
combined.weights = T,
type = "BRR")
To estimate the mean by status I do the following and it works perfectly.
mean = as.data.frame(svyby(~IRO, ~status,
SurvDesign,
svymean, na.rm = T, df=33))
Nevertheless, when I define a function that does exacty the same, I get the error message:
Error in eval(predvars, data, env) : object 'IRO' not found
I define and call the function using the following code;
#Defining a function to pass multiple nutrients
myFunc = function(nutr, myDesign, myDF){
mean = as.data.frame(svyby(~nutr, ~status,
myDesign,
svymean, na.rm = T, myDF))
}
myFunc(nutr = IRO, myDesign = SurvDesign, myDF = 33)
Can anyone tell me how to fix this?
Thanks a lot,
AG.
Additional relevant information:
OS: Windows 10 (64-bit)
R version: 3.6.2
R studio version: 3.5