如何在 r 中修复:dim(x) 必须具有正长度


在 R 中您可能遇到的错误是:

 Error in apply(df$var1, 2, mean): dim(X) must have a positive length 

当您尝试使用apply()函数计算数据框或矩阵的列的度量,同时提供向量作为参数而不是数据框或矩阵时,会出现此错误。

本教程准确解释了如何修复此错误。

如何重现错误

假设我们在 R 中有以下数据框:

 #create data frame
df <- data. frame (points=c(99, 97, 104, 79, 84, 88, 91, 99),
                 rebounds=c(34, 40, 41, 38, 29, 30, 22, 25),
                 blocks=c(12, 8, 8, 7, 8, 11, 6, 7))

#view data frame
df

  points rebound blocks
1 99 34 12
2 97 40 8
3 104 41 8
4 79 38 7
5 84 29 8
6 88 30 11
7 91 22 6
8 99 25 7

现在假设我们尝试使用apply()函数来计算“points”列中的平均值:

 #attempt to calculate mean of 'points' column
apply(df$points, 2, mean)

Error in apply(df$points, 2, mean): dim(X) must have a positive length

发生错误是因为apply()函数需要应用于数据框或矩阵,但在本例中我们尝试将其应用于数据框中的特定列。

如何修复错误

修复此错误的方法是简单地将数据框的名称提供给apply()函数,如下所示:

 #calculate mean of every column in data frame
apply(df, 2, mean)

  points rebound blocks 
  92,625 32,375 8,375 

从输出中,我们可以看到数据框中每列的平均值。例如,“点”栏的平均值是92,625

我们还可以使用此函数仅查找数据框中特定值的平均值:

 #calculate mean of 'points' and 'blocks' column in data frame
apply(df[c(' points ', ' blocks ')], 2, mean)

point blocks 
92,625 8,375

最后,如果我们想求单列的平均值,我们可以使用Mean()函数,而不使用apply()函数:

 #calculate mean of 'points' column
mean(df$points)

[1] 92,625

其他资源

以下教程解释了如何解决 R 中的其他常见错误:

如何在 R 中修复:名称与以前的名称不匹配
如何在 R 中修复:较长物体的长度不是较短物体长度的倍数
如何在 R 中修复:对比只能应用于具有 2 个或更多级别的因子

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注