假设我在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如何进行这些计算?
答案 0 :(得分: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次,重复一次,1次重复11次。