&引用;lm.fit 0(非NA)案例中的错误“;在多次成功运行r脚本后显示

&引用;lm.fit 0(非NA)案例中的错误“;在多次成功运行r脚本后显示,r,ggplot2,linear-regression,na,R,Ggplot2,Linear Regression,Na,这是一个难题。我正在计算一个大型数据集的线性模型,并使用“geom_text_repel”将方程粘贴到图形上我多次成功运行脚本,但突然出现以下错误: lm.拟合误差(x,y,偏移=偏移,singular.ok=singular.ok,…) :0(非NA)例 这真让人恼火,因为我什么都没改变。关于这个问题,我读了很多书,但还没有找到解决办法。许多人说这是因为数据集的每一行都有NAs,因此缺少协变量(和)。我的数据集非常完整: > apply(ro_aue_SO,1,function(x) s

这是一个难题。我正在计算一个大型数据集的线性模型,并使用“geom_text_repel”将方程粘贴到图形上我多次成功运行脚本,但突然出现以下错误

lm.拟合误差(x,y,偏移=偏移,singular.ok=singular.ok,…) :0(非NA)例

这真让人恼火,因为我什么都没改变。关于这个问题,我读了很多书,但还没有找到解决办法。许多人说这是因为数据集的每一行都有NAs,因此缺少协变量(和)。我的数据集非常完整:

> apply(ro_aue_SO,1,function(x) sum(is.na(x)))  
40 41 42 43 44 45 46 47 48 49 50 51 52 53 
 0  0  0  0  0  0  0  0  0  0  0  0  0  1
这个数据的其他子集没有NAs,我仍然得到相同的错误

我尝试过使用na.action=na.omit,我对错误使用了traceback()以获得更多的洞察力,我尝试过不同的数据输入方法-没有任何效果。由于错误消息是在脚本完美运行数小时后出现的,我想知道这是否是系统问题。我正在OSX 10.12.6上使用RStudio v1.0.153和R3.4.2

救命啊!救命啊!救命啊!提前谢谢你

以下是我的(简化)代码:

以下是我从运行上述脚本中得到的,并且仍然应该得到的(颜色/标签略有不同):
是的,在ROA子集中没有出现某些深度级别,因此这些数据集根本没有观测值

> holes_SO$depth <- factor(holes_SO$depth)
> ro_aue_SO <- subset(holes_SO, holes_SO$field == "ROA")
> table(ro_aue_SO$depth)

  0  20  30  60  90 120 
  4   0   4   3   3   0 
> ro_split <- split(ro_aue_SO, ro_aue_SO$depth)
> sapply(ro_split, nrow)
  0  20  30  60  90 120 
  4   0   4   3   3   0 
> ms <- lapply(ro_split, function(x) lm(co2_flux_mol_c_m2_s1 ~ soc_concentration_kg_m3 - 1, data = x))
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) (from #1) : 
  0 (non-NA) cases
>钻孔深度ro_aue_SO表(ro_aue_SO$深度)
0  20  30  60  90 120 
4   0   4   3   3   0 
>ro_split sapply(ro_split,nrow)
0  20  30  60  90 120 
4   0   4   3   3   0 

>ms是的,在ROA子集中没有出现某些深度级别,因此这些数据集根本没有观测值

> holes_SO$depth <- factor(holes_SO$depth)
> ro_aue_SO <- subset(holes_SO, holes_SO$field == "ROA")
> table(ro_aue_SO$depth)

  0  20  30  60  90 120 
  4   0   4   3   3   0 
> ro_split <- split(ro_aue_SO, ro_aue_SO$depth)
> sapply(ro_split, nrow)
  0  20  30  60  90 120 
  4   0   4   3   3   0 
> ms <- lapply(ro_split, function(x) lm(co2_flux_mol_c_m2_s1 ~ soc_concentration_kg_m3 - 1, data = x))
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) (from #1) : 
  0 (non-NA) cases
>钻孔深度ro_aue_SO表(ro_aue_SO$深度)
0  20  30  60  90 120 
4   0   4   3   3   0 
>ro_split sapply(ro_split,nrow)
0  20  30  60  90 120 
4   0   4   3   3   0 

>ms您是否更新了tidyverse软件包?Hadley会毫不犹豫地进行突破性的更改。也许您有一些级别的
ro\u aue\u SO$depth
,其中有0个条目?如果是这样,试着在你的链中添加
droplevels
。@Roland,也许吧?可能我专门编写这个脚本已经好几天了。“有什么办法可以证明我可能做了什么吗?”亚伦,我不这么认为。我试过液滴水平仪,但它没有改变任何东西。但感谢你们两位的投入
table(ro_aue_SO$depth)
将计算每个级别的数字,然后您就可以确定了。另外,在你的帖子中有很多与问题无关的额外代码,当我尝试运行你所说的错误所在的部分时,我没有发现错误。您能否将示例简化为仅发生错误的地方,并找到产生错误的数据子集?您是否可能更新了tidyverse软件包?Hadley会毫不犹豫地进行突破性的更改。也许您有一些级别的
ro\u aue\u SO$depth
,其中有0个条目?如果是这样,试着在你的链中添加
droplevels
。@Roland,也许吧?可能我专门编写这个脚本已经好几天了。“有什么办法可以证明我可能做了什么吗?”亚伦,我不这么认为。我试过液滴水平仪,但它没有改变任何东西。但感谢你们两位的投入
table(ro_aue_SO$depth)
将计算每个级别的数字,然后您就可以确定了。另外,在你的帖子中有很多与问题无关的额外代码,当我尝试运行你所说的错误所在的部分时,我没有发现错误。您能否将示例简化为仅发生错误的地方,并找到产生错误的数据子集?
> holes_SO$depth <- factor(holes_SO$depth)
> ro_aue_SO <- subset(holes_SO, holes_SO$field == "ROA")
> table(ro_aue_SO$depth)

  0  20  30  60  90 120 
  4   0   4   3   3   0 
> ro_split <- split(ro_aue_SO, ro_aue_SO$depth)
> sapply(ro_split, nrow)
  0  20  30  60  90 120 
  4   0   4   3   3   0 
> ms <- lapply(ro_split, function(x) lm(co2_flux_mol_c_m2_s1 ~ soc_concentration_kg_m3 - 1, data = x))
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) (from #1) : 
  0 (non-NA) cases
ro_aue_SO <- subset(holes_SO, holes_SO$field == "ROA")
ro_aue_SO <- droplevels(ro_aue_SO)
ro_split <- split(ro_aue_SO, ro_aue_SO$depth)
ms <- lapply(ro_split, function(x) lm(co2_flux_mol_c_m2_s1 ~ soc_concentration_kg_m3 - 1, data = x))