R在什么情况下回收?

Ros*_*che 3 r

我有两个变量,x(取5个值)和y(取11个值).当我想要运行参数时,

> v <- 2*x +y +1
Run Code Online (Sandbox Code Playgroud)

R响应:

Error at 2* x+y: Longer object length is not a multiple of shorter object length.
Run Code Online (Sandbox Code Playgroud)

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

Ari*_*man 13

回收工作在您的示例中:

> 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
Run Code Online (Sandbox Code Playgroud)

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

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