【问题标题】:R error occurs when assgin a vector to an array将向量分配给数组时发生R错误
【发布时间】:2012-06-19 11:10:51
【问题描述】:

我在 R 中的函数编码如下:

  matching_score=function(nitems, tot.score) {

  nInterval <- 4*nitems+1
  tot <- array(0, dim=c(nInterval,2,nGroup.all) )
  minimum <- nitems
  maximum <- nitems*5
  tot[,1,] <- c(minimum: maximum)    
    for (nGcut in 1:nGroup.all)
    {

... 但是 R 给出了一条错误消息: tot[, 1, ]

提前感谢您的建议。

【问题讨论】:

  • 我建议创建一个完整的函数(您的问题似乎不需要“for”循环)并包括一个调用,最终得到一个可重现的示例。
  • 您仍然需要实际调用该函数才能使其成为可重现的示例。 nGroup.all 是什么?另外,正如我上面提到的,由于错误发生在“for”循环之前,你(可能)在函数中不需要任何东西。
  • 查看此处以获取有关如何创建 great reproducible example in R 的帮助。
  • 感谢您的建议。我发现错误是因为 nGroup.all 而发生的,它应该指定为整数而不是向量。
  • 此外,R 中可重现的出色示例也很有帮助。谢谢。

标签: arrays r vector


【解决方案1】:

当您尝试cbind tot 对象时,可能会发生该错误。错误消息抱怨尺寸。您正在使用“[”,就好像该对象是一个具有三个维度的数组,而“cbind”不适用于数组。如果它真的是一个三维对象安装包'abind'并使用函数abind

require(abind)
arr <- array(1:(2*3*4), c(4,3,2) )
abind(arr, arr[,,1], along=3)

这条线的尺寸:

tempo[nRw,] <- cbind(tot[nRw,1,1], sum(tot[nRw,2,]))

... 似乎都错了。 LHS 有两个维度,“tot”对象有三个维度,sum 的返回值将是一个标量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2019-02-09
    • 2023-03-23
    相关资源
    最近更新 更多