我有两个变量,x(接受 5 个值)和 y(接受 11 个值)。当我想进行论证时,

> v <- 2*x +y +1

R 回复:
Error at 2* x+y: Longer object length is not a multiple of shorter object length.

我试过: 1*x 给了我 5 个 x 值,但 y 有 11 个值。所以 R 说它不能将 11 到 5 个值相加? – 这提出了一个普遍的问题:回收在什么情况下起作用?

最佳答案

回收在您的示例中起作用:

> x <- seq(5)
> y <- seq(11)
> x+y
 [1]  2  4  6  8 10  7  9 11 13 15 12
Warning message:
In x + y : longer object length is not a multiple of shorter object length
> v <- 2*x +y +1
Warning message:
In 2 * x + y :
  longer object length is not a multiple of shorter object length
> v
 [1]  4  7 10 13 16  9 12 15 18 21 14

您报告的“错误”实际上是一个“警告”,这意味着 R 正在通知您它正在回收但无论如何都会回收。您可能打开了 options(warn=2),它将警告转换为错误消息。

一般来说,避免依赖回收。如果你养成忽略警告的习惯,总有一天它会咬你,你的代码将以某种非常难以诊断的方式失败。

关于r - R在什么情况下回收?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6555651/

10-13 04:45