为什么我的代码不允许我指定要计算的变量 'by'?
Why won't my code allow me to specify what I want a variable evaluated 'by'?
我正在尝试创建一个 gamm 浮游动物种群(作为时间变量的函数),其中 sample_site(分类变量)对种群有随机影响(retrocurva 是一种浮游动物).
jr1 <- gamm(retrocurva ~ s(DOY, by = "Sample_site") + s(Year, by = "Sample_site") + s(Sample_site, bs = "re"), data = zooskeleton2)
但我不断收到此错误:
Error in terms.formula(formula, data = data) : invalid model formula in ExtractVars
如果我进行这些修改,代码就可以工作:
jr1 <- gamm(retrocurva ~ s(DOY) + s(Year), data = zooskeleton2)
但是我在其中添加 Sample_Site 的那一刻(即使没有在 s() 中指定它)...
jr1 <- gamm(retrocurva ~ s(DOY) + s(Year) + s(Sample_site), data = zooskeleton2)
我收到这个错误:
Error in names(dat) <- object$term : 'names' attribute [1] must be the same length as the vector [0]
对我做错了什么有什么想法吗?这是我正在操作的 'zooskeleton2' 数据框的一个子集以供参考。
retrocurva Sample_site DOY Year
<dbl> <chr> <dbl><dbl>
5.054528e-01 3-996 137 1995
7.192713e-01 3-996 137 1995
1.827290e-01 8-994 137 1995
7.925904e-01 8-994 137 1995
5.506497e-01 27-918 142 1995
2.001039e-01 29-905 142 1995
5.606469e-01 36-873 143 1995
4.903655e-01 37-890 143 1995
6.504399e+01 14-972 152 1995
5.058930e+01 16-970 152 1995
有两个问题:
- 您需要将
Sample_site
编码为一个因素,并且
- 您需要将此变量传递给
by
参数 unquoted
这应该可以解决问题:
zooskeleton2 <- transform(zooskeleton2, Sample_site = factor(Sample_site))
jr1 <- gamm(retrocurva ~ s(DOY, by = Sample_site) +
s(Year, by = Sample_site) +
s(Sample_site, bs = "re"),
data = zooskeleton2)
我正在尝试创建一个 gamm 浮游动物种群(作为时间变量的函数),其中 sample_site(分类变量)对种群有随机影响(retrocurva 是一种浮游动物).
jr1 <- gamm(retrocurva ~ s(DOY, by = "Sample_site") + s(Year, by = "Sample_site") + s(Sample_site, bs = "re"), data = zooskeleton2)
但我不断收到此错误:
Error in terms.formula(formula, data = data) : invalid model formula in ExtractVars
如果我进行这些修改,代码就可以工作:
jr1 <- gamm(retrocurva ~ s(DOY) + s(Year), data = zooskeleton2)
但是我在其中添加 Sample_Site 的那一刻(即使没有在 s() 中指定它)...
jr1 <- gamm(retrocurva ~ s(DOY) + s(Year) + s(Sample_site), data = zooskeleton2)
我收到这个错误:
Error in names(dat) <- object$term : 'names' attribute [1] must be the same length as the vector [0]
对我做错了什么有什么想法吗?这是我正在操作的 'zooskeleton2' 数据框的一个子集以供参考。
retrocurva Sample_site DOY Year
<dbl> <chr> <dbl><dbl>
5.054528e-01 3-996 137 1995
7.192713e-01 3-996 137 1995
1.827290e-01 8-994 137 1995
7.925904e-01 8-994 137 1995
5.506497e-01 27-918 142 1995
2.001039e-01 29-905 142 1995
5.606469e-01 36-873 143 1995
4.903655e-01 37-890 143 1995
6.504399e+01 14-972 152 1995
5.058930e+01 16-970 152 1995
有两个问题:
- 您需要将
Sample_site
编码为一个因素,并且 - 您需要将此变量传递给
by
参数 unquoted
这应该可以解决问题:
zooskeleton2 <- transform(zooskeleton2, Sample_site = factor(Sample_site))
jr1 <- gamm(retrocurva ~ s(DOY, by = Sample_site) +
s(Year, by = Sample_site) +
s(Sample_site, bs = "re"),
data = zooskeleton2)