【问题标题】:longer object length is not a multiple of shorter object length [error]较长的对象长度不是较短对象长度的倍数 [错误]
【发布时间】:2020-08-21 07:23:31
【问题描述】:

所以我目前遇到错误

Error in data.frame(PTS, P3M, REB = OREB + DREB, AST, TOV, STL, BLK, PF) : 
arguments imply differing number of rows: 605, 30
In addition: Warning message:
In OREB + DREB :
longer object length is not a multiple of shorter object length

我的代码在 R 版本 3.5.3 中如下

library('BasketballAnalyzeR')
RNGkind(sample.kind = "Rounding")
attach(Pbox)
View(Pbox)
data <- data.frame(PTS, P3M, REB=OREB+DREB, AST, TOV, STL, BLK, PF)
NROW(OREB)
detach(Pbox)

我很困惑 NROW(OREB) 给我的行数是 361,而 NROW(DREB) 给我的行数是 605。我将数据保存为 .csv 文件,OREB 和 DREB 列完美地有 605 个值在各自的列中。我已经看到有关相同错误的类似问题,但没有找到解决方案。我已经尝试重新安装数据包,重新启动计算机(大声笑),重新启动 R,因为它在逻辑上对我来说没有意义

【问题讨论】:

  • 您的代码在我的机器上运行良好。没有错误。没有不同的行数。
  • @stefan 认为情况就是这样。我对这个错误感到非常困惑——真的不知道出了什么问题。我已经将代码放在不同的脚本上,像我提到的那样重新启动计算机,然后重新安装包。我想我现在会尝试自己解决它,但是感谢 lmk 它对你有用
  • 代码在我的机器上也能正常工作。

标签: r


【解决方案1】:

你几乎不应该使用attach(),因为它会导致这样的混乱。 attach(Pbox) 所做的是将Pbox 放在搜索列表的第二位,排在全局环境之后。运行可以看到全局环境中的变量

ls()

我猜Pbox 列名之一也是全局环境中的一个变量,并且首先被找到。您可能忽略了 The following object is masked _by_ .GlobalEnv: OREB 之类的警告。

如果你想节省打字,更好的方法是

data <- with(Pbox, data.frame(PTS, P3M, REB=OREB+DREB, AST, TOV, STL, BLK, PF))

这会将Pbox 在该行的持续时间内置于全局环境之前,因此您将找到您期望找到的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2020-07-15
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多