首页 > 解决方案 > 为什么这个表达式的长度是 11?

问题描述

x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
y <- c(x, 0, x)
v <- 2*x + y + 1

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

第 7 页:CRAN 对 R 的介绍

请解释长度是11?

标签: r

解决方案


书中该部分上方的文字说:

出现在同一表达式中的向量不必都具有相同的长度。如果不是,则表达式的值是一个与表达式中出现的最长向量具有相同长度的向量。

换句话说,这里表达式中最长的向量是y,其长度为 11。因此,结果向量的长度为 11。

x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
y <- c(x, 0, x)
length(x)
#> [1] 5
length(y)
#> [1] 11

它继续说:

表达式中较短的向量会根据需要(可能是部分地)循环使用,直到它们与最长向量的长度相匹配。

这意味着为了添加两个向量,您需要首先使它们具有相同的长度。这样做的方法是循环使用向量,直到它们的长度相同。这就是说在这种情况下2 * x + y相当于2 * (c(x, x, x[1])) + y。您重复较短的向量,直到无法放入完整的向量,然后包含元素以弥补差异。c(x, x, x[1])长度为 11,与 的长度相同y


推荐阅读