【问题标题】:Operations using vectors of different lengths in R在 R 中使用不同长度向量的操作
【发布时间】:2014-09-15 16:04:14
【问题描述】:

假设我在 R 中有两个不同长度的向量:

x=1:10
y=1:20

即使它们的长度不同,R 也允许我对它们执行操作。

> y/x
 [1]  1.000000  1.000000  1.000000  1.000000  1.000000  1.000000
 [7]  1.000000  1.000000  1.000000  1.000000 11.000000  6.000000
[13]  4.333333  3.500000  3.000000  2.666667  2.428571  2.250000
[19]  2.111111  2.000000

> x + y
 [1]  2  4  6  8 10 12 14 16 18 20 12 14 16 18 20 22 24 26 28 30

为什么我可以这样做?这个输出是什么意思? R 是如何进行这些计算的?

【问题讨论】:

  • 您的向量xy 短,因此它的值被回收以匹配y 的长度;在这种情况下,您的代码相当于y/rep(x,2)
  • 这意味着yx分割:-)
  • 请阅读amazing R documentation,第 2.2 节。

标签: r vector


【解决方案1】:

来自amazingly-written documentation for R

2.2 向量算术

c(10.4, 5.6, 3.1, 6.4, 21.7) -> x
y <- c(x, 0, x)

向量可以在算术表达式中使用,在这种情况下,操作是执行元素 按元素。出现在同一表达式中的向量不必都具有相同的长度。如果 它们不是,表达式的值是一个与最长向量长度相同的向量 出现在表达式中。表达式中较短的向量会根据需要经常循环使用 (也许是分数)直到它们匹配最长向量的长度。特别是一个常数 只是重复。因此,通过上述分配命令

v <- 2*x + y + 1

生成一个长度为 11 的新向量 v,该向量通过逐个元素 2*x 相加构成 重复2.2次,y只重复一次,1重复11次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2018-09-06
    相关资源
    最近更新 更多