Reputation: 13
I am trying to run a single linear regression model analysis on a large dataset. This dataset contains several grouping factors, for each of which I want to run the analysis in an automatized manner.
I have a code that should automatically fit linear models according to the grouping factor "species", "performance" and "functional groups"; place them in a list, and extract all interesting variables from a lm summary, writing them into a table. I have attached the code below.
My problem now is that the code works perfectly fine for the entire dataset. When I split the dataset into three subsets according to grouping factor "region", the code works fine for two of the subsets, but does not for the third. Instead, I get the following:
Error: $ operator is invalid for atomic vectors.
A traceback showed me that the problem lies within nascar2
; when I start extracting the coefficients using summary(x)$.., psSE
. When I try to extract the values using psSE<- unlist(lapply(h.models, function(x) coef(x)[2,2])); R
does run the code without error, but won't write any output.
The structure of all three subsets of data is the same, and I have not changed anything in the code. Why could this be? And how do I fix this?
Thanks in advance!
Small extract of my dataset:
dput(D2)
structure(list(Sample_ID = structure(c(1L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L,
20L, 21L, 126L, 127L, 128L, 129L, 130L, 131L, 132L, 133L, 134L,
135L, 136L, 137L, 138L, 139L, 140L, 141L, 142L, 143L, 144L, 145L,
146L, 147L, 148L, 149L, 375L, 376L, 377L, 378L, 379L, 380L, 381L,
382L, 383L, 384L, 385L, 386L, 387L, 388L, 389L, 390L, 391L, 392L,
393L, 394L, 395L, 397L, 396L, 398L), .Label = c("AEG01_2015_DG",
"AEG01_2015_TO", "AEG01_2015_TR", "AEG03_2015_AE", "AEG03_2015_DG",
"AEG03_2015_LC", "AEG03_2015_TO", "AEG03_2015_TR", "AEG04_2015_AO",
"AEG04_2015_DG", "AEG04_2015_TO", "AEG04_2015_TR", "AEG05_2015_DG",
"AEG05_2015_TO", "AEG05_2015_TR", "AEG06_2015_DG", "AEG07_2015_AO",
"AEG09_2015_AE", "AEG09_2015_AO", "AEG09_2015_LC", "AEG10_2015_AO",
"AEG11_2015_DG", "AEG11_2015_TR", "AEG12_2015_DG", "AEG12_2015_TO",
"AEG12_2015_TR", "AEG13_2015_DG", "AEG13_2015_TO", "AEG13_2015_TR",
"AEG14_2015_DG", "AEG14_2015_TO", "AEG14_2015_TR", "AEG15_2015_DG",
"AEG15_2015_TO", "AEG15_2015_TR", "AEG16_2015_AO", "AEG16_2015_DG",
"AEG16_2015_TO", "AEG16_2015_TR", "AEG17_2015_AE", "AEG17_2015_AO",
"AEG17_2015_DG", "AEG17_2015_LC", "AEG17_2015_TO", "AEG18_2015_DG",
"AEG18_2015_TO", "AEG18_2015_TR", "AEG19_2015_AO", "AEG19_2015_DG",
"AEG19_2015_TO", "AEG19_2015_TR", "AEG20_2015_DG", "AEG20_2015_TO",
"AEG21_2015_DG", "AEG21_2015_TO", "AEG21_2015_TR", "AEG22_2015_AE",
"AEG22_2015_AO", "AEG22_2015_DG", "AEG22_2015_LC", "AEG23_2015_AO",
"AEG23_2015_DG", "AEG23_2015_LC", "AEG23_2015_TO", "AEG23_2015_TR",
"AEG24_2015_DG", "AEG24_2015_TO", "AEG24_2015_TR", "AEG25_2015_AE",
"AEG25_2015_TO", "AEG26_2015_AO", "AEG27_2015_AE", "AEG27_2015_AO",
"AEG27_2015_LC", "AEG28_2015_AE", "AEG28_2015_AO", "AEG28_2015_LC",
"AEG29_2015_AO", "AEG29_2015_DG", "AEG29_2015_TO", "AEG30_2015_AO",
"AEG30_2015_LC", "AEG32_2015_AE", "AEG32_2015_AO", "AEG33_2015_AE",
"AEG33_2015_AO", "AEG33_2015_LC", "AEG34_2015_TR", "AEG35_2015_AO",
"AEG35_2015_DG", "AEG35_2015_TO", "AEG35_2015_TR", "AEG36_2015_AO",
"AEG36_2015_DG", "AEG36_2015_TO", "AEG36_2015_TR", "AEG37_2015_DG",
"AEG37_2015_TO", "AEG37_2015_TR", "AEG39_2015_DG", "AEG39_2015_TO",
"AEG41_2015_AO", "AEG41_2015_DG", "AEG41_2015_TO", "AEG41_2015_TR",
"AEG44_2015_AO", "AEG44_2015_DG", "AEG44_2015_TO", "AEG45_2015_AO",
"AEG45_2015_DG", "AEG45_2015_TO", "AEG45_2015_TR", "AEG46_2015_AO",
"AEG46_2015_DG", "AEG46_2015_TO", "AEG46_2015_TR", "AEG47_2015_AE",
"AEG47_2015_LC", "AEG48_2015_LC", "AEG49_2015_AE", "AEG49_2015_AO",
"AEG49_2015_DG", "AEG49_2015_LC", "AEG50_2015_DG", "AEG50_2015_TO",
"AEG50_2015_TR", "HEG01_2015_DG", "HEG01_2015_TO", "HEG01_2015_TR",
"HEG02_2015_DG", "HEG02_2015_TO", "HEG03_2015_DG", "HEG03_2015_TO",
"HEG03_2015_TR", "HEG04_2015_LC", "HEG04_2015_TO", "HEG04_2015_TP",
"HEG04_2015_TR", "HEG05_2015_AE", "HEG05_2015_DG", "HEG05_2015_PL",
"HEG05_2015_TO", "HEG05_2015_TP", "HEG05_2015_TR", "HEG06_2015_DG",
"HEG06_2015_HL", "HEG06_2015_LC", "HEG06_2015_PL", "HEG06_2015_TO",
"HEG06_2015_TP", "HEG06_2015_TR", "HEG07_2015_DG", "HEG07_2015_LC",
"HEG07_2015_PL", "HEG07_2015_TO", "HEG07_2015_TP", "HEG07_2015_TR",
"HEG08_2015_DG", "HEG08_2015_PL", "HEG08_2015_TO", "HEG08_2015_TP",
"HEG08_2015_TR", "HEG09_2015_DG", "HEG09_2015_TO", "HEG10_2015_AE",
"HEG10_2015_DG", "HEG10_2015_PL", "HEG10_2015_TO", "HEG11_2015_AE",
"HEG11_2015_DG", "HEG11_2015_LC", "HEG11_2015_PL", "HEG12_2015_DG",
"HEG12_2015_PL", "HEG12_2015_TO", "HEG13_2015_PL", "HEG13_2015_TO",
"HEG13_2015_TP", "HEG13_2015_TR", "HEG14_2015_DG", "HEG14_2015_LC",
"HEG14_2015_PL", "HEG14_2015_TO", "HEG14_2015_TP", "HEG14_2015_TR",
"HEG15_2015_DG", "HEG15_2015_PL", "HEG15_2015_TO", "HEG15_2015_TP",
"HEG15_2015_TR", "HEG16_2015_AE", "HEG16_2015_DG", "HEG16_2015_PL",
"HEG16_2015_TO", "HEG16_2015_TP", "HEG16_2015_TR", "HEG17_2015_AO",
"HEG17_2015_DG", "HEG17_2015_HL", "HEG17_2015_LC", "HEG17_2015_PL",
"HEG17_2015_TO", "HEG18_2015_AE", "HEG18_2015_DG", "HEG18_2015_LC",
"HEG18_2015_PL", "HEG18_2015_TO", "HEG19_2015_AE", "HEG19_2015_AO",
"HEG19_2015_HL", "HEG19_2015_LC", "HEG19_2015_PL", "HEG19_2015_TO",
"HEG19_2015_TP", "HEG19_2015_TR", "HEG20_2015_AE", "HEG20_2015_AO",
"HEG20_2015_HL", "HEG20_2015_LC", "HEG20_2015_PL", "HEG20_2015_TO",
"HEG21_2015_AE", "HEG21_2015_DG", "HEG21_2015_PL", "HEG21_2015_TO",
"HEG21_2015_TP", "HEG22_2015_HL", "HEG22_2015_PL", "HEG22_2015_TO",
"HEG22_2015_TP", "HEG22_2015_TR", "HEG23_2015_AE", "HEG23_2015_DG",
"HEG23_2015_LC", "HEG23_2015_PL", "HEG23_2015_TO", "HEG23_2015_TP",
"HEG23_2015_TR", "HEG24_2015_PL", "HEG24_2015_TO", "HEG24_2015_TP",
"HEG24_2015_TR", "HEG25_2015_AE", "HEG25_2015_DG", "HEG25_2015_HL",
"HEG25_2015_LC", "HEG25_2015_PL", "HEG25_2015_TO", "HEG25_2015_TP",
"HEG26_2015_AE", "HEG26_2015_DG", "HEG26_2015_PL", "HEG26_2015_TO",
"HEG27_2015_AE", "HEG27_2015_DG", "HEG27_2015_PL", "HEG27_2015_TO",
"HEG27_2015_TP", "HEG28_2015_AE", "HEG28_2015_DG", "HEG28_2015_PL",
"HEG28_2015_TO", "HEG28_2015_TP", "HEG29_2015_AE", "HEG29_2015_LC",
"HEG29_2015_PL", "HEG29_2015_TO", "HEG29_2015_TP", "HEG30_2015_AE",
"HEG30_2015_DG", "HEG30_2015_LC", "HEG30_2015_PL", "HEG30_2015_TO",
"HEG30_2015_TP", "HEG30_2015_TR", "HEG31_2015_DG", "HEG31_2015_PL",
"HEG31_2015_TO", "HEG31_2015_TP", "HEG31_2015_TR", "HEG32_2015_DG",
"HEG32_2015_PL", "HEG32_2015_TO", "HEG32_2015_TP", "HEG32_2015_TR",
"HEG33_2015_DG", "HEG33_2015_PL", "HEG33_2015_TO", "HEG33_2015_TP",
"HEG33_2015_TR", "HEG34_2015_DG", "HEG34_2015_LC", "HEG34_2015_PL",
"HEG34_2015_TO", "HEG34_2015_TP", "HEG34_2015_TR", "HEG35_2015_DG",
"HEG35_2015_PL", "HEG35_2015_TO", "HEG35_2015_TP", "HEG35_2015_TR",
"HEG36_2015_AE", "HEG36_2015_DG", "HEG36_2015_TO", "HEG36_2015_TP",
"HEG37_2015_AE", "HEG37_2015_DG", "HEG37_2015_PL", "HEG37_2015_TO",
"HEG38_2015_HL", "HEG38_2015_LC", "HEG38_2015_PL", "HEG38_2015_TO",
"HEG38_2015_TP", "HEG38_2015_TR", "HEG39_2015_DG", "HEG39_2015_PL",
"HEG39_2015_TO", "HEG39_2015_TP", "HEG40_2015_PL", "HEG40_2015_TO",
"HEG41_2015_AE", "HEG41_2015_DG", "HEG41_2015_HL", "HEG41_2015_LC",
"HEG41_2015_PL", "HEG42_2015_AE", "HEG42_2015_AO", "HEG42_2015_DG",
"HEG42_2015_HL", "HEG42_2015_LC", "HEG42_2015_PL", "HEG42_2015_TO",
"HEG43_2015_AE", "HEG43_2015_DG", "HEG43_2015_PL", "HEG43_2015_TO",
"HEG43_2015_TP", "HEG43_2015_TR", "HEG44_2015_AE", "HEG44_2015_DG",
"HEG44_2015_PL", "HEG44_2015_TO", "HEG44_2015_TP", "HEG45_2015_AE",
"HEG45_2015_AO", "HEG45_2015_DG", "HEG45_2015_LC", "HEG45_2015_PL",
"HEG45_2015_TO", "HEG45_2015_TP", "HEG45_2015_TR", "HEG46_2015_AE",
"HEG46_2015_DG", "HEG46_2015_LC", "HEG46_2015_TO", "HEG47_2015_DG",
"HEG47_2015_PL", "HEG47_2015_TO", "HEG47_2015_TP", "HEG48_2015_AE",
"HEG48_2015_DG", "HEG48_2015_LC", "HEG48_2015_PL", "HEG48_2015_TO",
"HEG48_2015_TP", "HEG49_2015_DG", "HEG49_2015_PL", "HEG49_2015_TO",
"HEG50_2015_AO", "HEG50_2015_DG", "HEG50_2015_LC", "HEG50_2015_PL",
"HEG50_2015_TO", "HEG50_2015_TP", "SEG01_2015_DG", "SEG01_2015_HL",
"SEG01_2015_TO", "SEG02_2015_DG", "SEG02_2015_HL", "SEG02_2015_TO",
"SEG02_2015_TR", "SEG03_2015_DG", "SEG03_2015_TO", "SEG04_2015_DG",
"SEG04_2015_HL", "SEG04_2015_TO", "SEG05_2015_DG", "SEG05_2015_HL",
"SEG06_2015_HL", "SEG06_2015_PL", "SEG06_2015_TO", "SEG06_2015_TR",
"SEG07_2015_DG", "SEG07_2015_TO", "SEG08_2015_DG", "SEG08_2015_HL",
"SEG08_2015_PL", "SEG08_2015_TO", "SEG08_2015_TP", "SEG08_2015_TR",
"SEG09_2015_DG", "SEG09_2015_HL", "SEG09_2015_TO", "SEG09_2015_TR",
"SEG10_2015_DG", "SEG10_2015_HL", "SEG10_2015_TO", "SEG11_2015_DG",
"SEG11_2015_HL", "SEG11_2015_TO", "SEG12_2015_DG", "SEG12_2015_HL",
"SEG12_2015_TO", "SEG13_2015_AO", "SEG13_2015_HL", "SEG13_2015_PL",
"SEG13_2015_TO", "SEG13_2015_TR", "SEG14_2015_DG", "SEG14_2015_HL",
"SEG14_2015_TO", "SEG14_2015_TR", "SEG15_2015_DG", "SEG15_2015_HL",
"SEG16_2015_DG", "SEG16_2015_HL", "SEG16_2015_TO", "SEG17_2015_DG",
"SEG17_2015_HL", "SEG17_2015_LC", "SEG17_2015_PL", "SEG17_2015_TO",
"SEG17_2015_TR", "SEG18_2015_DG", "SEG18_2015_HL", "SEG18_2015_LC",
"SEG18_2015_PL", "SEG18_2015_TO", "SEG18_2015_TP", "SEG18_2015_TR",
"SEG19_2015_TO", "SEG20_2015_DG", "SEG20_2015_PL", "SEG20_2015_TO",
"SEG20_2015_TR", "SEG21_2015_DG", "SEG21_2015_PL", "SEG21_2015_TO",
"SEG21_2015_TR", "SEG22_2015_DG", "SEG22_2015_HL", "SEG22_2015_TO",
"SEG22_2015_TP", "SEG22_2015_TR", "SEG23_2015_DG", "SEG23_2015_HL",
"SEG23_2015_TO", "SEG24_2015_DG", "SEG24_2015_HL", "SEG25_2015_HL",
"SEG25_2015_TO", "SEG25_2015_TR", "SEG26_2015_HL", "SEG26_2015_TO",
"SEG26_2015_TR", "SEG27_2015_DG", "SEG27_2015_HL", "SEG27_2015_LC",
"SEG27_2015_TO", "SEG28_2015_DG", "SEG28_2015_HL", "SEG28_2015_TO",
"SEG29_2015_DG", "SEG29_2015_HL", "SEG29_2015_TO", "SEG30_2015_DG",
"SEG30_2015_HL", "SEG30_2015_LC", "SEG30_2015_PL", "SEG30_2015_TO",
"SEG30_2015_TP", "SEG30_2015_TR", "SEG31_2015_DG", "SEG31_2015_HL",
"SEG31_2015_LC", "SEG31_2015_PL", "SEG31_2015_TO", "SEG31_2015_TP",
"SEG32_2015_AE", "SEG32_2015_DG", "SEG32_2015_HL", "SEG32_2015_LC",
"SEG32_2015_PL", "SEG32_2015_TO", "SEG32_2015_TP", "SEG32_2015_TR",
"SEG33_2015_DG", "SEG33_2015_HL", "SEG33_2015_PL", "SEG33_2015_TO",
"SEG33_2015_TP", "SEG33_2015_TR", "SEG34_2015_DG", "SEG34_2015_PL",
"SEG34_2015_TO", "SEG34_2015_TP", "SEG34_2015_TR", "SEG35_2015_DG",
"SEG35_2015_PL", "SEG35_2015_TO", "SEG35_2015_TP", "SEG35_2015_TR",
"SEG36_2015_DG", "SEG36_2015_HL", "SEG36_2015_PL", "SEG36_2015_TO",
"SEG36_2015_TP", "SEG36_2015_TR", "SEG37_2015_DG", "SEG37_2015_HL",
"SEG37_2015_LC", "SEG37_2015_PL", "SEG37_2015_TO", "SEG37_2015_TP",
"SEG37_2015_TR", "SEG38_2015_DG", "SEG38_2015_HL", "SEG38_2015_PL",
"SEG38_2015_TO", "SEG38_2015_TP", "SEG38_2015_TR", "SEG39_2015_DG",
"SEG39_2015_LC", "SEG39_2015_PL", "SEG39_2015_TO", "SEG39_2015_TR",
"SEG40_2015_DG", "SEG40_2015_HL", "SEG40_2015_LC", "SEG40_2015_PL",
"SEG40_2015_TO", "SEG40_2015_TP", "SEG40_2015_TR", "SEG41_2015_DG",
"SEG41_2015_PL", "SEG41_2015_TO", "SEG42_2015_DG", "SEG42_2015_HL",
"SEG42_2015_PL", "SEG42_2015_TO", "SEG42_2015_TR", "SEG43_2015_DG",
"SEG43_2015_HL", "SEG43_2015_PL", "SEG43_2015_TO", "SEG43_2015_TP",
"SEG43_2015_TR", "SEG44_2015_DG", "SEG44_2015_TP", "SEG44_2015_TR",
"SEG45_2015_DG", "SEG45_2015_HL", "SEG45_2015_PL", "SEG45_2015_TO",
"SEG45_2015_TP", "SEG45_2015_TR", "SEG46_2015_DG", "SEG46_2015_PL",
"SEG46_2015_TO", "SEG46_2015_TR", "SEG47_2015_DG", "SEG47_2015_PL",
"SEG47_2015_TO", "SEG47_2015_TP", "SEG47_2015_TR", "SEG48_2015_LC",
"SEG49_2015_DG", "SEG49_2015_HL", "SEG49_2015_PL", "SEG49_2015_TO",
"SEG49_2015_TP", "SEG49_2015_TR", "SEG50_2015_AO", "SEG50_2015_DG",
"SEG50_2015_HL", "SEG50_2015_LC", "SEG50_2015_PL", "SEG50_2015_TO",
"SEG50_2015_TP"), class = "factor"), Region = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), .Label = c("AEG", "HEG", "SEG"), class = "factor"),
Plot = structure(c(1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,
4L, 4L, 5L, 5L, 5L, 6L, 7L, 9L, 9L, 9L, 10L, 50L, 1L, 1L,
1L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L,
5L, 6L, 6L, 6L, 6L, 6L, 50L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
3L, 3L, 4L, 4L, 4L, 5L, 5L, 6L, 6L, 6L, 6L, 7L, 7L, 8L, 8L,
8L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
"20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
"30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
"40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
"50"), class = "factor"), Plot_ID = structure(c(1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 5L, 6L, 7L,
7L, 7L, 8L, 43L, 44L, 44L, 44L, 45L, 45L, 46L, 46L, 46L,
47L, 47L, 47L, 47L, 48L, 48L, 48L, 48L, 48L, 48L, 49L, 49L,
49L, 49L, 49L, 93L, 94L, 94L, 94L, 95L, 95L, 95L, 95L, 96L,
96L, 97L, 97L, 97L, 98L, 98L, 99L, 99L, 99L, 99L, 100L, 100L,
101L, 101L, 101L), .Label = c("AEG01", "AEG03", "AEG04",
"AEG05", "AEG06", "AEG07", "AEG09", "AEG10", "AEG11", "AEG12",
"AEG13", "AEG14", "AEG15", "AEG16", "AEG17", "AEG18", "AEG19",
"AEG20", "AEG21", "AEG22", "AEG23", "AEG24", "AEG25", "AEG26",
"AEG27", "AEG28", "AEG29", "AEG30", "AEG32", "AEG33", "AEG34",
"AEG35", "AEG36", "AEG37", "AEG39", "AEG41", "AEG44", "AEG45",
"AEG46", "AEG47", "AEG48", "AEG49", "AEG50", "HEG01", "HEG02",
"HEG03", "HEG04", "HEG05", "HEG06", "HEG07", "HEG08", "HEG09",
"HEG10", "HEG11", "HEG12", "HEG13", "HEG14", "HEG15", "HEG16",
"HEG17", "HEG18", "HEG19", "HEG20", "HEG21", "HEG22", "HEG23",
"HEG24", "HEG25", "HEG26", "HEG27", "HEG28", "HEG29", "HEG30",
"HEG31", "HEG32", "HEG33", "HEG34", "HEG35", "HEG36", "HEG37",
"HEG38", "HEG39", "HEG40", "HEG41", "HEG42", "HEG43", "HEG44",
"HEG45", "HEG46", "HEG47", "HEG48", "HEG49", "HEG50", "SEG01",
"SEG02", "SEG03", "SEG04", "SEG05", "SEG06", "SEG07", "SEG08",
"SEG09", "SEG10", "SEG11", "SEG12", "SEG13", "SEG14", "SEG15",
"SEG16", "SEG17", "SEG18", "SEG19", "SEG20", "SEG21", "SEG22",
"SEG23", "SEG24", "SEG25", "SEG26", "SEG27", "SEG28", "SEG29",
"SEG30", "SEG31", "SEG32", "SEG33", "SEG34", "SEG35", "SEG36",
"SEG37", "SEG38", "SEG39", "SEG40", "SEG41", "SEG42", "SEG43",
"SEG44", "SEG45", "SEG46", "SEG47", "SEG48", "SEG49", "SEG50"
), class = "factor"), Species = structure(c(3L, 7L, 9L, 1L,
3L, 5L, 7L, 9L, 2L, 3L, 7L, 9L, 3L, 7L, 9L, 3L, 2L, 1L, 2L,
5L, 2L, 9L, 3L, 7L, 9L, 3L, 7L, 3L, 7L, 9L, 5L, 7L, 8L, 9L,
1L, 3L, 6L, 7L, 8L, 9L, 3L, 4L, 5L, 6L, 7L, 8L, 3L, 4L, 7L,
3L, 4L, 7L, 9L, 3L, 7L, 3L, 4L, 7L, 3L, 4L, 4L, 6L, 7L, 9L,
3L, 7L, 4L, 3L, 6L), .Label = c("Agrimonia eupatoria", "Anthoxanthum odoratum",
"Dactylis glomerata", "Holcus lanatus", "Lotus corniculatus",
"Plantago lanceolata", "Taraxacum officinalis", "Trifolium pratense",
"Trifolium repens"), class = "factor"), Spec_ID = structure(c(3L,
7L, 9L, 1L, 3L, 5L, 7L, 9L, 2L, 3L, 7L, 9L, 3L, 7L, 9L, 3L,
2L, 1L, 2L, 5L, 2L, 9L, 3L, 7L, 9L, 3L, 7L, 3L, 7L, 9L, 5L,
7L, 8L, 9L, 1L, 3L, 6L, 7L, 8L, 9L, 3L, 4L, 5L, 6L, 7L, 8L,
3L, 4L, 7L, 3L, 4L, 7L, 9L, 3L, 7L, 3L, 4L, 7L, 3L, 4L, 4L,
6L, 7L, 9L, 3L, 7L, 4L, 3L, 6L), .Label = c("Agr_eup", "Ant_odo",
"Dac_glo", "Hol_lan", "Lot_cor", "Pla_lan", "Tar_off", "Tri_pra",
"Tri_rep"), class = "factor"), Functional.Group = structure(c(1L,
2L, 3L, 2L, 1L, 3L, 2L, 3L, 1L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
1L, 2L, 1L, 3L, 1L, 3L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 3L, 3L,
2L, 3L, 3L, 2L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 3L, 2L, 2L, 3L,
1L, 1L, 2L, 1L, 1L, 2L, 3L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L,
2L, 2L, 3L, 1L, 2L, 1L, 1L, 2L), .Label = c("grass", "herb",
"legume"), class = "factor"), Performance = structure(c(3L,
3L, 3L, 1L, 3L, 1L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L,
3L, 2L, 3L, 1L, 3L, 2L, 3L, 2L, 3L, 3L, 2L, 1L, 2L, 3L, 2L,
3L, 2L, 3L, 3L, 2L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 3L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 2L, 3L, 2L), .Label = c("Loser", "Neutral",
"Winner"), class = "factor"), C.NIRSCN = c(434100, 428000,
429900, 496800, 434400, 498900, 426800, 429000, 444700, 432100,
426400, 430000, 436200, 429300, 430300, NA, 464400, 459300,
438100, 421100, 444800, 431300, 430000, 427000, 428800, NA,
425500, 432800, 426900, 430300, 452000, 426400, NA, 428000,
447900, 437200, NA, 426300, NA, 427600, 427900, 434400, 460400,
NA, 424800, 434700, 431500, 425200, 426900, 433900, 420600,
430600, 430500, 440900, 429900, 424600, 428100, 427100, 441200,
428400, 422700, 426100, 428600, 428000, 434200, 425900, 430400,
431100, 427600), C.2014 = c(83.25, 83.25, 83.25, 62.89, 62.89,
62.89, 62.89, 62.89, 45.85, 45.85, 45.85, 45.85, 91.34, 91.34,
91.34, 78.08, 83.68, 71.9, 71.9, 71.9, 91.71, 68.78, 43.63,
43.63, 43.63, 31.83, 31.83, 29.6, 29.6, 29.6, 52.58, 52.58,
52.58, 52.58, 39.54, 39.54, 39.54, 39.54, 39.54, 39.54, 19.13,
19.13, 19.13, 19.13, 19.13, 32.53, 211.9, 211.9, 211.9, 181.54,
181.54, 181.54, 181.54, 132.14, 132.14, 210.72, 210.72, 210.72,
177.4, 177.4, 301.46, 301.46, 301.46, 301.46, 176.75, 176.75,
157.57, 157.57, 157.57)), row.names = c("1", "1.1", "1.2",
"3", "3.1", "3.2", "3.3", "3.4", "4", "4.1", "4.2", "4.3", "5",
"5.1", "5.2", "6", "7", "9", "9.1", "9.2", "10", "50.2", "51",
"51.1", "51.2", "52", "52.1", "53", "53.1", "53.2", "54", "54.1",
"54.2", "54.3", "55", "55.1", "55.2", "55.3", "55.4", "55.5",
"56", "56.1", "56.2", "56.3", "56.4", "100.5", "101", "101.1",
"101.2", "102", "102.1", "102.2", "102.3", "103", "103.1", "104",
"104.1", "104.2", "105", "105.1", "106", "106.1", "106.2", "106.3",
"107", "107.1", "108", "108.1", "108.2"), class = "data.frame")
And here is my code:
# Region subsets
DA <- subset(D2, Region == "AEG")
DH <- subset(D2, Region == "HEG")
DS <- subset(D2, Region == "SEG")
slopeSubTable <- function(organism, resource, data = DS){
hd <- na.omit(subset(DS, select = c(organism, resource, "Spec_ID", "Plot_ID", "Region","Performance", "Functional.Group")))
nascar2 <- as.formula(paste("scale(log(", organism, ")) ~ scale(log(", resource, ")) | Spec_ID"))
motocross3 <- as.formula(paste("scale(log(", organism, ")) ~ scale(log(", resource, ")) | Performance"))
soapboxderby4 <-as.formula(paste("scale(log(", organism, ")) ~ scale(log(", resource, ")) | Functional.Group"))
h.models <- list(lmList(nascar2, data = hd, pool = F),
lmList(motocross3, data = hd, pool = F),
lmList(soapboxderby4, data = hd, pool = F))
group.name <- unlist(lapply(h.models, function (x) rownames(coef(x)[2])))
spec <- substr(group.name, 1, 7)
region <- substr(group.name, 9, 11)
nmod<- unlist(h.models, function (x) length(summary(x)[[3]]))
estimate <- unlist(lapply(h.models, function (x) coef(x)[[1]]))
csSE <- unlist(lapply(h.models, function(x) coef(x)[1,2]))
ctval <- unlist(lapply(h.models, function(x) coef(x)[1,3]))
cp <- unlist(lapply(h.models, function(x) coef(x)[1,4]))
slope <- unlist(lapply(h.models, function (x) coef(x)[[2]]))
psSE<- unlist(lapply(h.models, function(y) sapply(y, function(x) summary(x)$coefficients[2,2])))
ptval <- unlist(lapply(h.models, function(y) sapply(y, function(x) summary(x)$coefficients[2,3])))
prsq <- unlist(lapply(h.models, function (y) sapply(y, function(x) summary(x)$r.squared)))
pp <- unlist(lapply(h.models, function (y) sapply(y, function(x) summary(x)$coefficients[2,4])))
multR2 <- unlist(lapply(h.models, function (y) sapply(y, function(x) summary(x)$r.squared)))
adjR2 <- unlist(lapply(h.models, function(y) sapply(y,function(x) summary(x)$adj.r.squared)))
Fstat <- unlist(lapply(h.models, function(y) sapply(y,function(x) summary(x)$fstatistic[1])))
dpd <- data.frame(stoichio = rep(paste(organism), length(group.name)),
id = interaction(as.factor(rep(paste(organism), length(group.name))), as.factor(group.name)),
spec,
region,
group.name,
estimate,
#csSE,
#ctval,
#cp,
#starlets = pStars(cp),
slope,
psSE,
ptval,
prsq,
pp,
starlets = pStars(pp),
multR2,
adjR2,
Fstat)
return(dpd)
}
H_C_SCH <- slopeSubTable("C.NIRSCN", "C.2014")
Upvotes: 1
Views: 78
Reputation: 107737
Ultimately, your error appears data-specific by the specific subset and not a coding issue. Possibly one of the regions' models failed to be properly estimated due to inadequate factors, approximation limitations, or other needed data requirements.
Consider wrapping the problem lines with tryCatch
to return NA
for any issues. From my review, the problem lines appear with the summary()$coefficients
lines which may return NULL
for failed estimations. Also, note lme4
actually raises warnings for your attention.
psSE<- unlist(lapply(h.models, function(y) sapply(y, function(x)
tryCatch(summary(x)$coefficients[2,2], error = function(e) NA))))
ptval <- unlist(lapply(h.models, function(y) sapply(y, function(x)
tryCatch(summary(x)$coefficients[2,3], error = function(e) NA))))
prsq <- unlist(lapply(h.models, function (y) sapply(y, function(x)
tryCatch(summary(x)$r.squared, error = function(e) NA))))
pp <- unlist(lapply(h.models, function (y) sapply(y, function(x)
tryCatch(summary(x)$coefficients[2,4], error = function(e) NA))))
multR2 <- unlist(lapply(h.models, function (y) sapply(y, function(x)
tryCatch(summary(x)$r.squared, error = function(e) NA))))
adjR2 <- unlist(lapply(h.models, function(y) sapply(y,function(x)
tryCatch(summary(x)$adj.r.squared, error = function(e) NA))))
Fstat <- unlist(lapply(h.models, function(y) sapply(y,function(x)
tryCatch(summary(x)$fstatistic[1], error = function(e) NA))))
Once function runs, you can review the generated data frame to locate the NA
s and investigate the data further by specific rows.
By the way, consider by
to pass all Region subsets into your method and avoid the need to manually subset
. The result will be a named list of data frames which is more manageable then many separate data frames flooding your global environment.
slopeSubTable <- function(organism, resource, data) {
hd <- na.omit(subset(data, select = c(organism, resource, "Spec_ID", "Plot_ID",
"Region","Performance", "Functional.Group")))
...
return(dpd)
}
# BUILD LIST OF DATA FRAMES
df_list <- by(D2, D2$Region, function(sub) slopeSubTable("C.NIRSCN", "C.2014", sub))
# EQUIVALENT CALL WITHOUT `function`
df_list <- by(D2, D2$Region, slopeSubTable, organism = "C.NIRSCN", resource = "C.2014")
head(df_list$AEG)
head(df_list$HEG)
head(df_list$SEG)
Upvotes: 0