【问题标题】:Error in data[[grp[i]]] : subscript out of bounds数据 [[grp[i]]] 中的错误:下标超出范围
【发布时间】:2019-01-25 18:18:22
【问题描述】:

我正在尝试使用 WRS2 包中的 bwtrim 函数进行方差分析,但它返回以下错误。

bwtrim(formula = Sumarea ~ Snumber * Day, id = id, data = CO2)

数据错误[[grp[i]]]:下标越界

据我从本网站的其他问题(如Error in `[<-`(`*tmp*`, , subscript out of bounds subscript out of bounds)中了解到,我正在尝试调用不存在的列。但是,我输入的每一列都存在于我的数据库中。

> head(CO2)
    Sname Snumber Day Replica Diff Area Sumarea id
1 H4.8AxB       1   0       1    0    0       0  1
2 H4.8AxB       1   0       2    0    0       0  2
3 H4.8AxB       1   0       3    0    0       0  3
4 H4.8AxB       1   0       4    0    0       0  4
5    S141       2   0       1    0    0       0  5
6    S141       2   0       2    0    0       0  6
> tail(CO2)
       Sname Snumber Day Replica Diff  Area Sumarea  id
511 II-1Q61L      14  28       3  400 12530   34505 511
512 II-1Q61L      14  28       4    0     0   40348 512
513    Straw      15  28       1   20   140     790 513
514    Straw      15  28       2  120   875    7435 514
515    Straw      15  28       3  130   700    7925 515
516    Straw      15  28       4  130  1050    8935 516

我也尝试使用同一个包中的sppbb,返回不同的错误。

sppbb(formula = Sumarea ~ Snumber * Day, id, CO2, est = "onestep", nboot = 500)

xmat[, k]

我最后一次尝试是使用mranova 函数来分析我的数据库的一个子集。

c1 <- subset(CO2, subset = Snumber == "1")

data.frame(y, groups, blocks) 中的错误:找不到对象“Sumarea”

该列确实存在于我的数据库中。

 Sname Snumber Day Replica Diff Area Sumarea  id
1   H4.8AxB       1   0       1    0    0       0   1
2   H4.8AxB       1   0       2    0    0       0   2
3   H4.8AxB       1   0       3    0    0       0   3
4   H4.8AxB       1   0       4    0    0       0   4
61  H4.8AxB       1   3       1 1210 1815    1815  61
62  H4.8AxB       1   3       2 2150 3225    3225  62
63  H4.8AxB       1   3       3 1600 2400    2400  63
64  H4.8AxB       1   3       4 1910 2865    2865  64
117 H4.8AxB       1   4       1 6280 3745    5560 117
118 H4.8AxB       1   4       2 6990 4570    7795 118
119 H4.8AxB       1   4       3 6440 4020    6420 119
120 H4.8AxB       1   4       4 6150 4030    6895 120
177 H4.8AxB       1   5       1 3820 5050   10610 177
178 H4.8AxB       1   5       2 5420 6205   14000 178
179 H4.8AxB       1   5       3 4780 5610   12030 179
180 H4.8AxB       1   5       4 5310 5730   12625 180
237 H4.8AxB       1   6       1 2320 3070   13680 237
238 H4.8AxB       1   6       2 2700 4060   18060 238
239 H4.8AxB       1   6       3 1900 3340   15370 239
240 H4.8AxB       1   6       4 2520 3915   16540 240
297 H4.8AxB       1   7       1 1240 1780   15460 297
298 H4.8AxB       1   7       2 1870 2285   20345 298
299 H4.8AxB       1   7       3 1350 1625   16995 299
300 H4.8AxB       1   7       4 1480 2000   18540 300
361 H4.8AxB       1  10       1  460 2550   18010 361
362 H4.8AxB       1  10       2  910 4170   24515 362
363 H4.8AxB       1  10       3  810 3240   20235 363
364 H4.8AxB       1  10       4  770 3375   21915 364
425 H4.8AxB       1  14       1    0    0   27975 425
426 H4.8AxB       1  14       2  820 3460   27975 426
427 H4.8AxB       1  14       3  580 2780   23015 427
428 H4.8AxB       1  14       4  530 2600   24515 428

如果有人建议我为我的一般统计分析提供解决方案,尤其是让bwtrim 函数正常工作,我将非常感激。 我认为这种混合模型是我必须用于我的数据的模型(主体变量内 = 副本,主体之间 = 应变和时间,我不知道该放在哪里)

【问题讨论】:

  • 请指定使用的包
  • 此函数的帮助文件中的示例是否为您运行?如果是,那么您的数据可能会有特别不同的地方。也许你有一列只有一个值...
  • @akrun 我只使用了 WRS2 包

标签: r statistics


【解决方案1】:

对我来说,解决方案是删除中间因子中未使用的因子水平。这些是子集的结果。

那么您可以检查一下您的数据是什么样子的:

str(data)

对于您可以通过比较来检查您是否有未使用的级别的因素:

nlevels(data$factorcolumn)

length(unique(data$factorcolumn))

如果它们不同,您可以使用

删除未使用的级别

data$factorcolumn &lt;- droplevels(data$factorcolumn)

【讨论】:

    猜你喜欢
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多