当将函数应用于不同的数据子集时,对于3个子集中的1个,发生“错误:$运算符对于原子向量无效”

问题描述 投票:1回答:1

我正在尝试对大型数据集进行单个线性回归模型分析。该数据集包含几个分组因子,我希望针对每个分组因子以自动化方式运行分析。

我有一个代码,该代码应根据“种类”,“性能”和“功能组”的分组因子自动拟合线性模型;将它们放在列表中,并从lm摘要中提取所有有趣的变量,然后将它们写入表中。我已经附上了下面的代码。

我现在的问题是该代码对于整个数据集都可以正常工作。当我根据分组因子“区域”将数据集分为三个子集时,该代码对于其中两个子集工作正常,但对于第三个子集则无效。相反,我得到以下信息:

错误:$运算符对原子向量无效。

回溯告诉我问题出在nascar2之内;当我开始使用summary(x)$.., psSE提取系数时。当我尝试使用psSE<- unlist(lapply(h.models, function(x) coef(x)[2,2])); R提取值时,代码会正确运行,但不会写入任何输出。

所有三个数据子集的结构都相同,并且我没有更改代码中的任何内容。为什么会这样呢?我该如何解决呢?

提前感谢!

我的数据集的小摘要:

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")

这是我的代码:

# 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")
r subset linear-regression
1个回答
0
投票

最终,您的错误显示的是特定子​​集的特定数据,而不是编码问题。由于因素不足,近似限制或其他所需数据要求,可能无法正确估计该地区的模型之一。

考虑用tryCatch包裹问题行以针对任何问题返回NA。根据我的评论,问题行与summary()$coefficients行一起出现,对于估计失败,可能会返回NULL。另外,请注意lme4实际上会引起警告,请注意。

  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))))

一旦函数运行,您可以查看生成的数据框以找到NA,并按特定的行进一步调查数据。


顺便说一下,考虑by将所有Region子集传递到您的方法中,而无需手动subset。结果将是一个命名的数据帧列表,与许多单独的数据帧充斥着您的全局环境相比,它更易于管理。

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)
© www.soinside.com 2019 - 2024. All rights reserved.